Además de SUID y SGID, existe otro permiso especial del que hablaremos en esta oportunidad: el sticky bit. Nos basaremos en el man page de chmod, en el cual aparecen la definición y las aclaraciones necesarias sobre este permiso especial. Sin más demora, ¡veamos de qué se trata!
Sticky bit
En un sistema Linux pueden existir directorios en los que TODOS los usuarios del sistema pueden crear, modificar, y borrar archivos. Como ejemplos, podemos nombrar a /tmp y a cualquier directorio compartido (pensemos por ejemplo en el espacio común al que pueden acceder varios usuarios en un servidor FTP).
El sticky bit aplicado a un directorio es un permiso especial que hace que solamente el propietario de un archivo contenido en el mismo (o root) puedan borrarlo. Para probar, crearemos el directorio /comun y le daremos permisos del tipo 777:
mkdir /comun chmod 777 /comun
A continuación, el usuario gacanepa creará un archivo llamado ejemplogabriel.txt dentro de /comun:
touch /comun/ejemplogabriel.txt
Si el usuario alumno intenta borrar dicho archivo, podrá hacerlo sin inconveniente:
rm /comun/ejemplogabriel.txt
Podemos ver todas las operaciones anteriores en la Fig. 1 a continuación:
Por otra parte, si intentamos hacer lo mismo pero habiendo colocado el sticky bit:
chmod 1777 /comun touch /comun/ejemploconsticky.txt rm /comun/ejemploconsticky.txt
Como podemos observar en la Fig. 2, esta vez el usuario alumno no pudo borrar un archivo que no sea de su propiedad, aun cuando el directorio padre tenga permisos completos.
Cabe aclarar que no es estrictamente necesario que un directorio tenga permisos 777 para poder colocar el sticky bit. Basta con utilizar un directorio (con permisos 755) propiedad de cierto grupo y realizar las mismas pruebas anteriores con dos usuarios que pertenezcan a dicho grupo. Los resultados deberían ser idénticos a los que hemos observado en los ejemplos de este post.
Espero que este post les haya resultado útil. ¡Nos leemos en breve!