En Linux, ¿el permiso de "escritura" es equivalente a "ejecutar" para los directorios?

16

El permiso de ejecución tiene sentido para los archivos (que incluyen scripts, etc.), pero cuando se trata de directorios, el write (w)permiso funciona de la misma manera que execute (x), ¿verdad?

Lo que significa que si le damos permiso de escritura a un directorio, normalmente también verificamos "x" (para ejecutar) para ese directorio, ¿verdad?

soy yo
fuente
2
Tu pregunta ahora es incomprensible. No está claro dónde está hablando de los permisos en un archivo y dónde está hablando de los permisos en el directorio que lo contiene.
Gilles 'SO- deja de ser malo'
1
Si tiene una nueva pregunta, ¿puede publicarla por separado ?
Michael Mrozek
1
¿Qué quiere decir con "permiso de lectura es todo lo que necesitamos para un archivo?" ¿Todo lo que necesitas para qué? Para leer un archivo? Si. Para modificar un archivo ... no, a menos que usted sea el propietario de ese archivo.
Gabe.
Además de omitir las operaciones "puede leer, puede cambiar el nombre / eliminar archivos dentro del directorio", su "000: no puede eliminarlo" es realmente incorrecto. Si el directorio ya está vacío, puede eliminarlo si puede escribir en su directorio padre. Si no está vacío, no se puede eliminar hasta que esté vacía (lo que es vacía es una operación recursiva que requiere los tres permisos en todos los subdirectorios y que no vacíos)
Random832
Su edición de esta pregunta hizo que fuera realmente confuso descubrir lo que se estaba preguntando y no pareció agregar ningún valor para futuros visitantes. Volví a la forma de pregunta simple original que @Gilles respondió. Si tiene un problema nuevo, puede hacer otra pregunta . Intente mantener cada pregunta centrada en un tema.
Caleb

Respuestas:

49

El permiso de ejecución en directorios permite acceder a archivos dentro del directorio. El permiso de lectura permite enumerar las entradas del directorio. El permiso de escritura permite crear y eliminar entradas en él.

Tener permiso de lectura o escritura en un directorio sin permiso de ejecución no es útil. Tener permiso de ejecución pero no de lectura ocasionalmente es útil: permite acceder a los archivos solo si conoce su nombre exacto, una especie de protección de contraseña primitiva.

Entonces, en la práctica, los permisos útiles en un directorio son:

  • ---: sin acceso
  • --x: puede acceder a archivos cuyo nombre se conoce (ocasionalmente útil)
  • r-x: acceso normal de solo lectura
  • rwx: acceso normal de lectura y escritura

Ver también Directorio con permiso + x, padres sin él. ¿Cuándo sería esto útil? y ¿Son importantes los permisos del directorio padre al acceder a un subdirectorio?

Gilles 'SO- deja de ser malvado'
fuente
@Gilles tiene razón! Investigar un poco sobre esto para Linux revela: 1) Cuando un directorio no tiene un permiso 'x' para el usuario, es la llamada al sistema stat o lstat la que falla. Esto da como resultado que no se obtengan metadatos de las entradas del directorio, aunque es posible obtener las entradas del directorio (nombre, inodo) cuando el usuario tiene permiso 'r' en el directorio. 2) Consulte man 7 path_resolution en Linux para obtener información adicional.
Kedar Mhaswade
2
w-xTambién puede tener sus usos. Por ejemplo, solía ser una práctica bastante común que los sitios FTP públicos tuvieran una carpeta uploado incomingque se pudiera escribir públicamente pero que solo los administradores del servidor pudieran leer.
jmbpiano
¿Qué haría rw-eso que r--no podría hacer para los directorios? Esta respuesta menciona la capacidad de cambiar el tiempo de modificación, pero en mi sistema Linux ZFS eso no es cierto, pude cambiar el tiempo de modificación incluso cuando mi directorio era solo r--.
CMCDragonkai
@CMCDragonkai Tienes razón, cambiar los metadatos se basa en la propiedad, no está relacionado con los permisos. No creo que pueda hacer nada con un rw-directorio que no sea enumerar las entradas (y moverlo / eliminarlo si posee su padre, eso no requiere ningún permiso en el directorio).
Gilles 'SO- deja de ser malvado'
@Gilles: Eso es correcto. con rw-en el directorio, no puedo crear nuevos archivos en él o cambiar los existentes, incluso si tengo rw-en el archivo que trato de cambiar. Tampoco puedo touchel archivo. Estoy en Arch Linux 4.14.13.
Matthias Braun