Tema de Jannah La licencia no está validada. Vaya a la página de opciones del tema para validar la licencia. Necesita una sola licencia para cada nombre de dominio.

¿Qué es el bit de ejecución en Linux y por qué es importante?

En los sistemas Linux, cada archivo tiene un conjunto de permisos que determinan cómo los usuarios pueden interactuar con él. Uno de estos permisos es el “bit de ejecución”, que juega un papel crucial a la hora de determinar si un archivo puede ejecutarse o no como programa. En este artículo, repasamos el concepto del bit de ejecución, cómo funciona y por qué es importante para la gestión de archivos y la ejecución de programas en Linux. También aprenderá a administrar estos permisos mediante comandos de línea de comandos simples.

¿Qué es el bit de ejecución en Linux y por qué es importante?

Resumen

  • El bit de ejecución determina si se concede permiso para ejecutar un archivo como programa o script.
  • La configuración del bit de ejecución en un directorio determina su accesibilidad, permitiendo la entrada y el acceso a los archivos.
  • Comprender y manipular los permisos de archivos mediante comandos como stat y chmod es esencial para los usuarios de Linux.

El sistema básico de permisos de archivos en Linux es simple y robusto, y no es de extrañar que haya sobrevivido durante más de 50 años. Pero la implementación es un elemento confuso y que merece ser entendido en detalle.

¿Qué es un bit de ejecución y cómo puedo saber qué es?

Cada archivo en un sistema Linux tiene un conjunto de permisos que controlan lo que se puede hacer con él: ¿se puede leer, escribir o ejecutar? Hay tres niveles de usuarios, cada uno con su propio conjunto de permisos: el propietario del archivo (usuario), los miembros del grupo que posee el archivo y todos los demás (otros). Estas tres acciones y tres tipos de usuarios nos dan un total de nueve permisos por archivo:

permisos-unix ¿Qué es el bit de ejecución en Linux y por qué es importante?

نصيحة
Recuerde que en los sistemas operativos Unix y Linux, las carpetas también son archivos. Tiene los mismos datos de permisos que otros archivos, aunque los significados de estos permisos son ligeramente diferentes.

Los permisos de lectura y escritura son bastante sencillos, pero el “bit de ejecución” es un poco más misterioso y mágico. Sin embargo, una vez que lo entiendes, es bastante sencillo y especialmente útil cuando lo necesitas.

Puede comprobar los permisos de archivos utilizando una herramienta como ls o stat. Intente ejecutar ls -l en un archivo de su sistema y verá algo como esto:

linux-ls-l-1 ¿Qué es el bit de ejecución en Linux y por qué es importante?

Hay mucha información sobre el archivo aquí, pero los permisos son solo un montón de letras al principio. En este caso, “rwxr-xr-x” significa que, si bien sólo el propietario del archivo puede escribir en él, cualquier otra persona puede leerlo y ejecutarlo. Escuchará el término "bit de ejecución", pero en realidad hay tres bits de ejecución por archivo.

¿Qué hace el bit de ejecución en el archivo?

El propósito principal del bit de ejecución es controlar si puede o no ejecutar un archivo como programa o script. Si ingresa un nombre de archivo en la línea de comando, la interfaz de usuario intentará ejecutarlo. Intentar ejecutar un archivo de datos, como un documento o una imagen, provocará un error de permisos:

linux-execute-error ¿Qué es el bit de ejecución en Linux y por qué es importante?

Esto se debe a que el bit de ejecución no está configurado en dicho archivo. Sin embargo, la ejecución no es mágica; No puedes simplemente mover el joystick chmod sobre un archivo de imagen y convertirlo en un programa ejecutable:

linux-execute-image ¿Qué es el bit de ejecución en Linux y por qué es importante?

Sólo puedes ejecutar un archivo si es de un tipo determinado. En términos generales, hay dos tipos de archivos que puedes ejecutar directamente en Linux:

  • Archivo ejecutable binario: Este es un archivo que ha sido compilado a partir del código fuente y empaquetado para una arquitectura específica, utilizando instrucciones de código de máquina para realizar su tarea. Puede compilar dicho programa desde el código fuente, descargarlo o instalarlo mediante un administrador de paquetes.
  • Archivo de texto: Este es un archivo de texto escrito en un lenguaje legible por humanos que otro programa puede ejecutar y es interpretado. Podría ser un script o un programa en un lenguaje de script como Perl o PHP.

Cuando ejecuta un archivo de texto directamente, escribiendo su ruta, su shell decide qué intérprete usar en función de la línea de código. Por ejemplo, un script de Python podría comenzar con esta línea:

#!/usr/bin/python

Esto refuerza el hecho de que el bit de ejecución tiene que ver con permisos y nada más. Es lo que permite que la interfaz decida si se le debe permitir intentar ejecutar un archivo como programa, no si realmente tiene sentido ejecutarlo.

Es importante comprender que el bit de ejecución no es una forma garantizada de evitar la ejecución. Tome este texto de interfaz como ejemplo:

#!/bin/sh
echo "pretend this script does something dangerous like rm -rf / ..."

Podrías pensar que eliminar el permiso de ejecución te mantiene seguro:

linux-execute-denied ¿Qué es el bit de ejecución en Linux y por qué es importante?

Sin embargo, consideremos la siguiente situación:

linux-script-danger ¿Qué es el bit de ejecución en Linux y por qué es importante?

¡desastre! El script ahora se está ejecutando porque:

Cualquiera puede ejecutar el programa /bin/sh.

El programa sh intentará ejecutar el nombre de archivo pasado como argumento, sin verificar su bit de ejecución.
Por lo tanto, la ejecución del programa implica dos aspectos separados. Los permisos de archivo determinan si puede intentar ejecutarlo escribiendo su ruta. El contenido de un archivo determina si realmente hace algo cuando se ejecuta. En última instancia, el bit de ejecución es un mecanismo de seguridad para evitar que ejecutes un archivo accidentalmente.

¿Qué hace el bit de ejecución en un directorio?

El bit de ejecución funciona de forma bastante diferente cuando se configura en un directorio. Después de todo, una guía no puede ser un programa, por lo que no tiene sentido implementarla. En cambio, el bit de ejecución determina si puede ingresar a un directorio y acceder a sus archivos.

Con el bit de ejecución establecido en un directorio, puede usar el comando cd para ingresarlo y el comando ls para ver detalles de su contenido:

linux-enter-list-directory ¿Qué es el bit de ejecución en Linux y por qué es importante?

Sin embargo, si elimina este permiso, ya no podrá acceder a este directorio ni ver los detalles de los archivos que contiene:

linux-dir-no-execute ¿Qué es el bit de ejecución en Linux y por qué es importante?

Tenga en cuenta que el comando ls todavía muestra una lista larga, pero reemplaza la mayoría de los datos con signos de interrogación, lo que indica que no puede leerlos. Los nombres reales de los archivos dentro del directorio se almacenan como parte de ese directorio, por lo que el permiso de lectura otorga acceso a ellos. Pero no se puede acceder a ningún otro dato, como el tamaño del archivo o la fecha de modificación, sin permiso de ejecución en el directorio.

Esto puede generar errores confusos si tiene un alias para el comando. Por ejemplo, en mi sistema Ubuntu, el comando ls tiene un alias ls –color, que utiliza ciertos datos de archivo para colorear su salida. En un directorio no ejecutable, esto genera errores:

 

linux-ls-perms ¿Qué es el bit de ejecución en Linux y por qué es importante?

Pero sin esta opción, el comando ls funciona bien en dicho directorio porque solo necesita mostrar los nombres de los archivos.

¿Cómo puedo utilizar y cambiar el bit de ejecución?

Si necesita centrarse solo en los permisos de archivos, puede utilizar el comando stat para obtener resultados más precisos que el comando ls. La opción -c en stat le permite especificar un formato para extraer los metadatos exactos que necesita. Por ejemplo, para mostrar solo los permisos del archivo junto a su nombre, use este formato:

stat -c "%a %n"

ملاحظة
Necesitará modificar este comando en macOS que usa la versión BSD de stat en lugar de la versión GNU Linux:

stat -f "%Sp %N"

Si solo desea la cadena de permisos, puede omitir el “%n”, es decir:

stat -c "%a"

Esto puede resultar útil en la creación de scripts. Por ejemplo, puede utilizar esta única línea para obtener información resumida sobre las diferentes configuraciones de permisos para todos los archivos de un directorio:

stat -c "%a" ~/home/projects/all/*/* | sort | uniq -c | sort

Puede cambiar los permisos de archivos utilizando el comando chmod. Toda la sintaxis del comando chmod es bastante compleja porque es una herramienta muy poderosa. Sin embargo, si recuerda las acciones y abreviaturas básicas basadas en letras (u=usuario/propietario, g=grupo, o=otro, a=todos), será fácil de usar.

Para que el archivo pueda ser ejecutado por cualquier persona, utilice este comando:

chmod a+x file

Para eliminar el permiso de ejecución de todos los usuarios, escriba lo siguiente:

chmod a-x file

El bit de ejecución en Linux es una parte esencial del sistema de gestión de archivos, que determina si un archivo puede ejecutarse o no como programa. Comprender y gestionar adecuadamente estos permisos puede mejorar la seguridad y la eficiencia de su sistema. Pruebe los comandos que le proporcionamos en este artículo y comparta su experiencia: ¿Tuvo algún desafío al administrar los permisos? ¿Tienes algún otro consejo que añadir? No olvides compartir este artículo con otros para difundir el beneficio.

Ir al botón superior