
En Ubuntu 14.04, enumerar el contenido del directorio /var/spool/cron
proporciona ls -l
los siguientes permisos en los directorios internos (columnas irrelevantes recortadas):
drwxrwx--T daemon daemon atjobs
drwxrwx--T daemon daemon atspool
drwx-wx--T root crontab crontabs
¿Para qué sirve establecer un bit adhesivo en un directorio sin el bit ejecutable?
Respuesta1
Desde la página del manual para sticky
:
DIRECTORIOS PEGAJOSOS
Un directorio cuyo `sticky bit' está configurado se convierte en un directorio de sólo agregar o, más exactamente, un directorio en el que la eliminación de archivos está restringida. Un usuario solo puede eliminar o cambiar el nombre de un archivo en un directorio fijo si el usuario tiene permiso de escritura para el directorio y el usuario es el propietario del archivo, el propietario del directorio o el superusuario. Esta característica se aplica de manera útil a directorios como /tmp, que deben poder escribirse públicamente pero deberían negar a los usuarios la licencia para eliminar o cambiar el nombre de los archivos de otros de forma arbitraria.
Cualquier usuario puede crear un directorio fijo. Consulte chmod(1) para obtener detalles sobre cómo modificar los modos de archivo.
El resultado de esto es que sólo el propietario de un archivo en un directorio fijo puede eliminarlo. En el caso de las cron
tablas, esto significa queINo puedo entrar allí y quitarsutabla cron y reemplácela con una demieligiendo, aunque tenga acceso de escritura al directorio. Es por este motivo que /tmp
también queda pegajoso.
Respuesta2
¿Para qué sirve establecer un bit adhesivo en un directorio sin el bit ejecutable?
drwx-wx--T 2 root crontab 4096 Apr 24 15:00 /var/spool/cron/crontabs/
Lo que estás viendo es similar en Debian. El directoriohacetener el bit ejecutable configurado, para el propietario y el grupo. Solo para el propietario, Sticky no tiene mucho sentido, ya que, por definición, es solo un usuario (y el propietario puede anular Sticky de todos modos). Pero para el grupo, es tan importante como para directorios de escritura mundial como /tmp
, es decir, que los usuarios normales no pueden eliminar archivos que pertenecen a otros usuarios.
Pero ¿por qué alguien sería miembro del grupo crontab
?
¡Para poder modificar sus crontabs, por supuesto! Debian crontab
funciona con el privilegio setgid, permitiendo así que cualquier usuario normal pueda acceder a ese directorio, con su propio UID y con el GID de crontab
. Eso es un poco más seguro que dejarlos correr crontab
con setfluidoprivilegio ya que mantiene a los usuarios separados entre sí.
-rwxr-srx 1 raíz crontab 36008 11 de junio de 2015 /usr/bin/crontab
Ahora, normalmente, los archivos en el directorio pertenecen y reciben el nombre de sus respectivos dueños, y si crontab
solo permite eliminar el crontab del usuario, no debería haber ningún problema. Tener los permisos de archivo configurados de esa manera funciona para proteger contra errores en el programa,yhace que el UID real del usuario que accede sea relevante, no solo sunombre.