GNU/Linux >> Tutoriales Linux >  >> Linux

Bit de ejecución vs lectura. ¿Cómo funcionan los permisos de directorio en Linux?

Al aplicar permisos a directorios en Linux, los bits de permiso tienen significados diferentes a los de los archivos normales.

  • El bit de lectura (r ) permite al usuario afectado listar los archivos dentro del directorio
  • El bit de escritura (w ) permite al usuario afectado crear, cambiar el nombre o eliminar archivos dentro del directorio y modificar los atributos del directorio
  • El bit de ejecución (x ) permite al usuario afectado ingresar al directorio y acceder a archivos y directorios dentro
  • La parte pegajosa (T , o t si el bit de ejecución está configurado para otros) establece que los archivos y directorios dentro de ese directorio solo pueden ser eliminados o renombrados por su propietario (o root)

Primero, piensa:¿Qué es un directorio? Es solo una lista de elementos (archivos y otros directorios) que viven dentro. Entonces:directorio =lista de nombres.

Leer bit =Si está configurado, puede leer esta lista. Entonces, por ejemplo, si tiene un directorio llamado poems :

  • Puedes ls poems y obtendrá una lista de elementos que viven dentro (-l no revelará ningún detalle!).
  • Puede usar la finalización de la línea de comandos, es decir, touch poems/so <TAB> poems/somefile .
  • No puedes hacer poems su directorio de trabajo (es decir, cd en él).

Escribir bit =Si está configurado, puede modificar esta lista, es decir, puede {agregar, renombrar, eliminar} nombres en ella. ¡Pero! En realidad, solo puede hacerlo si el bit de ejecución también está configurado.

Ejecutar bit =Hacer de este directorio su directorio de trabajo, es decir, cd en ello. Necesita este permiso si desea:

  • acceder (leer, escribir, ejecutar) elementos que viven dentro.
  • modifique la lista en sí, es decir, agregue, cambie el nombre, elimine nombres en ella (por supuesto, el bit de escritura debe establecerse en el directorio).

Caso interesante 1 :si tiene permisos de escritura y ejecución en un directorio, puede {eliminar, cambiar el nombre} de los elementos que se encuentran dentro incluso si no tiene permiso de escritura en esos elementos. (use un bit adhesivo para evitar esto)

Caso interesante 2 :si tiene permiso de ejecución (pero no de escritura) en un directorio Y tiene permiso de escritura en un archivo que se encuentra dentro, no puede eliminar el archivo (porque implica eliminarlo de la lista). Sin embargo, puede borrar su contenido, p. si es un archivo de texto, puede usar vi para abrirlo y eliminarlo todo. El archivo seguirá estando allí, pero estará vacío.

Resumen:

Leer bit =Puede leer los nombres en la lista.
Escribir bit =Puede {agregar, renombrar, eliminar} nombres en la lista SI el bit de ejecución también está configurado.
Ejecutar bit =Puede hacer de este directorio su directorio de trabajo.

PD:El artículo mencionado por Kusalananda es una buena lectura.


He preparado esta tabla con todos los permisos posibles y sus efectos prácticos.

(*) Solo nombres de archivos :otros atributos como el tamaño o la fecha no son accesibles. P.ej. puede usar la tecla de tabulación para autocompletar pero no el comando ls.

Algunos pensamientos :

  • Con X desactivada , R y W son en su mayoría inútiles.
  • X solo desactivando RW le da una falsa sensación de seguridad ya que podría leer y escribir a ciegas el contenido de los archivos y acceder a los subdirectorios. Debe asegurarse de que todos los elementos secundarios directos del directorio tengan permisos explícitos.
  • Rara vez usará otros valores que:
    • 0 :Sin acceso.
    • 1 :Acceso mínimo que permite atravesar.
    • 5 :Permitir la lectura/escritura, pero sin alterar la estructura del árbol de directorios en sí.
    • 7 :Acceso completo.

Linux
  1. Cómo actualizar un enlace simbólico de Linux

  2. Permisos de archivo en Linux:lectura/escritura/ejecución

  3. UNIX/Linux:Guía para principiantes sobre permisos de archivos y directorios (umask, chmod, lectura, escritura, ejecución)

  4. Cómo obtener el tamaño del directorio en Linux

  5. ¿Cómo ejecutar un archivo PL en Linux?

Cómo eliminar un directorio en Linux

Cómo cambiar permisos en Linux

Cómo leer un archivo con espacios en Linux

Cómo copiar un directorio en Linux

Permisos básicos de directorio de Linux y cómo verificarlos

¿Cómo ejecutar un script bash?