Special Permissions: SUID, GUID, and sticky bit
SUID o Set Owner User ID es un indicador de bit de permiso que se aplica a los ejecutables. SUID permite que un usuario alternativo ejecute un ejecutable con los mismos permisos que el propietario del archivo en lugar de los permisos del usuario alternativo.
SUID permission
Add SUID
chmod u+s file
# forma numérica: cuarto dígito a los permisos normales con número octal siempre 4.
chmod 4766 file
# Queda así:
rwsrw-rw-
Delete SUID
chmod u-s file
chmod 0766 file
Add execute option when SUID bit is uppercase 'S':
chmod +x file
.
SGID es similar a SUID. Con el conjunto de bits SGID, cualquier usuario que ejecute el archivo tendrá los mismos permisos que el propietario del grupo del archivo.
Su beneficio está en el manejo del directorio. Cuando se aplica el permiso SGID a un directorio, todos los subdirectorios y archivos creados dentro de este directorio obtendrán la misma propiedad de grupo que el directorio principal (no la propiedad de grupo del usuario que creó los archivos y directorios).
💡 GUID (globally unique identifier) se refiere usualmente a una forma más robusta de UUID (universally unique identifier), y parece fuera de lugar respecto de los permisos de usuarios y grupos en particular. Tradicionalmente, sin embargo, alguna documentación de Unix refieren a SGID como bit GUID.
Agregar bit SGID
chmod g+s file
# forma numérica: cuarto dígito a los permisos normales con número octal siempre 2.
chmod 2766 file
# Queda así:
rwxrwsrw-
Eliminar bit SGID
chmod g-s file
chmod 0766 file
El sticky bit funciona en el directorio. Con el sticky bit establecido en un directorio, todos los archivos en el directorio solo pueden ser eliminados o renombrados por los propietarios del archivo o por la raíz.
Esto se usa normalmente en el directorio /tmp que funciona como la papelera de archivos temporales.
linuxhandbook:~$ ls -ld /tmp
drwxrwxrwt 1 root root 512 Apr 12 13:24 /tmp
Como puede ver, la carpeta /tmp, tiene la letra t en el mismo lugar donde esperamos ver x o – para otros permisos. Esto significa que un usuario (excepto root) no puede eliminar los archivos temporales creados por otros usuarios en el directorio /tmp.
Agregar sticky bit
chmod +t my_dir
chmod 1766
Eliminar:
chmod -t my_dir
chmod 0766
Si el directorio no tiene el permiso de ejecución establecido para todos, establecer un bit fijo hará que se muestre T en lugar de t. Una indicación de que las cosas no son del todo correctas con el bit pegajoso.
Permisos especiales en Linux: Sticky Bit, SUID y SGID - ochobitshacenunbyte