¿Por qué usar un poco pegajoso?

18

"El bit adhesivo se aplica solo a los directorios, y generalmente se usa en directorios que se pueden escribir públicamente. Dentro de un directorio en el que se aplica el bit adhesivo, se impide a los usuarios eliminar o renombrar cualquier archivo que no sea de su propiedad".

¿Significa esto si ejecuto lo siguiente:

// only allow other users to read files in /directory
sudo chmod o-w -R /directory
sudo chmod o-x -R /directory
sudo chmod o+r -R /directory

¿los usuarios aún pueden eliminar o cambiar el nombre de cualquier archivo que no les pertenezca?

JohnMerlino
fuente

Respuestas:

22

El bit adhesivo es útil en directorios que se pueden escribir en todo el mundo, como /tmp. En estos directorios, cualquiera puede crear un archivo, por lo que el directorio debe poder escribirse en todo el mundo. Pero eso significaría que cualquiera también podría eliminar un archivo, incluso si no les perteneciera, ya que la eliminación de un archivo está controlada por el permiso de escritura en el directorio. Cuando un directorio tiene el bit adhesivo, solo el propietario de un archivo tiene permiso para eliminarlo.

En un directorio con permisos rwx------o rwxr-xr-x, solo el propietario del directorio puede crear o eliminar un archivo. Si hay archivos que pertenecen a un usuario diferente (movidos allí por root o creados cuando el directorio tenía más permisos abiertos), sigue siendo el propietario del directorio quien tiene permisos para eliminarlos, no el propietario del archivo.

En un directorio con permisos rwxrwx---, todos los miembros del grupo pueden crear y eliminar archivos. Cualquier miembro del grupo puede eliminar cualquier archivo, incluso si pertenece a un usuario diferente. Si los permisos son en su rwxrwx--Tlugar (el capital Tes como t, pero tsignifica que el xbit está establecido y Tsignifica que el xbit está libre), cualquier miembro del grupo puede crear un archivo, y los miembros del grupo pueden eliminar archivos pero solo sus propios archivos .

Puede usar el siguiente comando para ver qué directorios tienen el bit adhesivo en su sistema:

find / /run /run/lock /run/shm -xdev -path /usr -prune -o -perm -o+t -ls 2>/dev/null

Encontrará algunos directorios como los /tmpque están abiertos para todos, y algunos directorios como los /var/spool/cron/crontabsque están reservados para un programa del sistema que se ejecuta como su propio grupo ( setgid ), donde el bit adhesivo asegura que el programa solo pueda eliminar archivos en nombre del usuario que los posee (lo que garantiza que el programa solo pueda crear archivos en nombre del usuario que los posee es que el programa se ejecuta como ese usuario, no como root, por lo que no puede crear archivos que pertenezcan a otros usuarios).

Gilles 'SO- deja de ser malvado'
fuente