Permisos en directorios: ¿cuáles son necesarios?

Los permisos estándar (ugo/rwx: user, group, others / read, write, execute) son relativamente fáciles de entender cuando hablamos de archivos. Sin embargo, cuando de directorios se trata pueden resultar un poco confusos. En este post vamos a ilustrar mediante ejemplos cuáles permisos en directorios son necesarios para realizar cada operación. Tener en claro esto es fundamental también para restringir el acceso de manera confiable.

Permisos en directorios

Para empezar, crearemos un directorio llamado dirprueba propiedad del usuario root y del grupo gacanepa:

sudo mkdir dirprueba
sudo chown root:gacanepa dirprueba

Finalmente, agreguemos algunos archivos vacíos. El siguiente comando creará hola1.txt, hola2.txt, y hola3.txt:

sudo touch dirprueba/hola{1..3}.txt

Como podemos ver en la Fig. 1, el usuario gacanepa puede listar los contenidos del directorio sin inconvenientes. Sin embargo, si le quitamos el permiso de ejecución sobre el directorio (removiéndolo de la terna correspondiente al grupo), el mismo usuario pierde esa posibilidad:

Los permisos en directorios: efecto de r
Figura 1 – Los permisos en directorios: efecto de r
sudo chmod 740 dirprueba/

Conclusión 1: el permiso de lectura en un directorio es necesario para ver la lista de los objetos que haya en su interior con ls -l.

A continuación, otorguemos permiso de escritura sobre el directorio para el grupo gacanepa:

sudo chmod 760 dirprueba/

Y ahora tratemos de escribir en uno de los archivos que contiene:

echo "Probando..." > dirprueba/hola1.txt

eliminar otro:

rm dirprueba/hola2.txt

o crear uno nuevo:

touch dirprueba/hola4.txt

¿Qué sucede? Aunque tenemos permisos de escritura en el directorio, no podemos escribir en sus contenidos como podemos apreciar en la Fig. 2:

Permisos en directorios: limitación de w
Figura 2 – Permisos en directorios: limitación de w

Conclusión 2: el permiso de escritura sobre un directorio no es suficiente para poder modificar su contenido.

Inevitablemente surge la pregunta: ¿qué se debe hacer para solucionar estos inconvenientes? La respuesta es simple: agregar el permiso de ejecución. Al hacer

chmod 770

el usuario gacanepa podrá (por los permisos heredados de su grupo) ver el listado de archivos en el directorio, escribir, e incluso moverse hacia dentro del mismo con cd.

Espero que este post les haya resultado útil. ¡Nos leemos en el próximo!

Te invitamos a conocer la propuesta completa de Carrera Linux Argentina para convertirte en un experto y completo sysadmin desde cero. En nuestro sitio web Aprender Linux podrás encontrar más detalles y contactarnos si te surgen preguntas o dudas. ¡Esperamos tu consulta!