Permisos especiales en ficheros y directorios de Linux
El bit SUID, también llamado setuid, cuando se activa sobre un fichero indica que todo aquél que ejecute el archivo tendrá los mismos privilegios de quien lo creo mientras se esté ejecutando este archivo. Por ejemplo si el usuario administrador creara un fichero con un script y lo setuida, otro usuario sin privilegios que lo ejecute y mientras se ejecuta el script tendrá los mismos privilegios que el usuario administrador.
La forma de poner el bit SUID es sumar 4000 al valor en octal de los permisos del fichero, es decir si el fichero tiene el valor 755 se le añadiría cambiándolo cambiando los permisos a 4755, también podemos utilizar el comando chmod con el parámetro “u+s” para añadirlo.
La representación del bit activado es un “S” en el caso de que el fichero no sea ejecutable por el usuario o una “s” en el caso que sea ejecutable, en la posición de la “x” en los bits de seguridad del usuario. En el siguiente ejemplo el fichero1.txt es ejecutable por el usuario y el fichero2.txt no lo es:
El bit SGID actúa de igual forma pero a nivel de grupo, es decir al activarlo sobre un fichero el que ejecute el fichero tendrá los mismos privilegios de grupo que el grupo asignado al fichero.
La forma de habilitar el bit SGID es sumar 2000 al valor octal de los permisos del fichero o utilizar el parámetro “g+s” en el comando chmod.
La representación es igual que para SUID pero en la posición del grupo:
Los bits SUID y SGID se puede habilitar en los directorios pero no tiene efecto alguno.
El Stiky Bit, también llamado bit de permanencia, cuando está habilitado para un fichero este informa al sistema operativo es un fichero que se utiliza mucho y debe permanecer en memoria RAM, pero actualmente con la capacidad de la RAM y la velocidad de los discos no se utiliza prácticamente para ficheros. Cuando está habilitado para directorios indica que los ficheros que contienen sólo podrán ser borrados por la persona que los crea independientemente de los permisos que posean.
El Stiky Bit se activa sumando 1000 al valor en octal de los permisos del fichero o con el comando chmod utilizando el parámetro “+t”. Veremos que se representa con una “t” en la posición de la “x” de todos los usuarios en los permisos del fichero. En el caso de mostrarse un “T” indica que este bit no está activo. Un ejemplo claro de uso es en el directorio /tmp donde se requiere este tipo de permiso especial:
Apunte de seguridad
Como hemos podido ver el uso de estos bits nos permite disponer de una mayor control sobre los ficheros y directorios, pero a su vez también puede ser un punto de entrada para atacantes que aprovechen estos bits especiales para la escalada de permisos en el sistema.
La recomendación en comprobar con cierta periodicidad los ficheros y directorios que tienen habilitados estoy bits. Esta tarea se puede realizar un simple “find” en el sistema:
# find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;
También tenemos que tener en cuenta que en el fichero /etc/fstab se puede indicar que una partición no permita el uso de los bits de permanencia utilizando en las opciones los parámetros nosuid y nosgid.