Permisos especiales en Linux: Sticky Bit, SUID y SGID

Existen una serie de permisos especiales en GNU/Linux, que, aunque no son habituales, es necesarios saberlos, por ejemplo, para trabajar en grupo sobre ciertos directorios o bien si deseamos sacarnos en algún momento los certificados de LPIC

Respecto a los exámenes de LPIC, justo estoy en ello, por eso los últimos artículos en la web son tan técnicos, ya que se tratan de áreas que salen en dichos exámenes y me sirven para refrescar conocimientos.

Permisos especiales en Linux

sticky bit

Se trata de un permiso de acceso que puede ser asignado a ficheros y directorios en sistemas UNIX y similares. Aunque históricamente su fin eran otro, actualmente el sticky bit se utiliza sobre directorios.

Cuando se le asigna a un directorio, significa que los elementos que hay en ese directorio solo pueden ser renombrados o borrados por su propietario o bien por root. El resto de usuarios que tengan permisos de lectura y escritura, los podrán leer y modificar, pero no borrar.

El sticky bit comúnmente es utilizado para «/tmp»

Este tipo de permisos sobre un directorio se puede otorgar de varias maneras:

  1. chmod 1775 test

O bien

  1. chmod +t /test #para activar sticky bit
  2. chmod -t /test #para desactivar sticky bit

Si un usuario intenta borrar un fichero de una carpeta con sticky bit, recibierá el siguiente mensaje:

  1. [david@servcentos]$ rm -rf hola
  2. rm: cannot remove ‘hola’: Operation not permitted

SUID

Cuando se activa el bit SUID sobre un fichero significa que el que lo ejecute va a tener los mismos permisos que el que creó el archivo. Esto es útil en algunas ocasiones, aunque hay que utilizarlo con cuidado, ya que puede acarrear problemas de seguridad

Para activarlo:

  1. [david@servcentos test]$ chmod 4775 hello.sh
  2. [david@servcentos test]$ ls -l hello.sh
  3. -rwsrwxr-x 1 david david 26 Jun 11 19:02 hello.sh
  4. [david@servcentos test]$ chmod -x hello.sh
  5. [david@servcentos]$ ls -l hello.sh
  6. -rwSrw-r-- 1 david david 26 Jun 12 19:02 hello.sh

Observamos que en la última línea le quitamos el servicio de ejecución al archivo y en los permisos se reemplaza la s minúscula por la S mayúsculas.

SGID

El bit SGID es lo mismo que SUID, pero a nivel de grupo. Esto es, todo archivo que tenga activo el SGID, al ser ejecutado, tendrás los privilegios del grupo al que pertenece.

Opción bastante útil si queremos configurar un directorio para colaborar diferentes usuarios. Si se aplica este bit al directorio, cualquier archivo creado en dicho directorio, tendrá asignado el grupo al que pertenece el directorio

Por ejemplo, si un usuario que tiene permiso de escritura en el directorio crea un archivo allí, ese archivo es un miembro del mismo grupo que el directorio y no el grupo del usuario. Como hemos dicho, esto es muy útil en la creación de directorios compartidos.

  1. chmod g+s "directorio"

En el caso de un fichero:

  1. chmod 2555 "fichero"

Espero que esta información os pueda servir en algún momento. Nos vamos leyendo.

Fuentes consultadas:

Hernan Vivani’s Blog – Permisos espaciales 

Artículo en Wikipedia sobre Sticky bit