Permisos extendidos de archivos en linux
Existen una serie de permisos especiales que, aunque no son habituales, es necesarios saberlos, por ejemplo, para trabajar en grupo sobre ciertos directorios.
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.
Es un atributo muy común en la carpeta /tmp
Para asignar el permiso se usa el modificador t o bien mediante chmod con un 1 al principio.
chmod 1775 /micarpeta
O bien
chmod +t /micarpeta #para activar sticky bit
chmod -t /micarpeta #para desactivar sticky bit
Si un usuario intenta borrar un fichero en una carpeta con sticky bit, no podrá.
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 asignar el permiso se usa el chmod con un 4 al principio.
chmod 4775 /micarpeta/ejecuta.sh
El permiso aparecerá así:
ls -l ejecuta.sh
-rwsrwxr-x 1 eduardo eduardo 6 Jun 11 19:02 ejecuta.sh
chmod -x ejecuta.sh
ls -l ejecuta.sh
-rwSrw-r-- 1 eduardo eduardo 6 Jun 11 19:02 ejecuta.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.
Es bastante útil til queremos configurar un directorio para que colaboren diferentes usuarios. Si se aplica este bit al directorio, cualquier archivo creado en dicho directorio, tendrá asignado el grupo al que pertenece el directorio.
Para asignar el permiso se usa el chmod con un 2 al principio o con un
chmod g+s
O bien
chmod 2555 ejecuta.sh