Setuid

Setuid, que significa establecer ID de usuario en la ejecución, es un tipo especial de permiso de archivo en sistemas operativos Unix y similares a Unix como Linux y BSD. Es una herramienta de seguridad que permite a los usuarios ejecutar ciertos programas con privilegios escalados.

Cuando se establece el permiso setuid de un archivo ejecutable, los usuarios pueden ejecutar ese programa con un nivel de acceso que coincida con el usuario propietario del archivo. Por ejemplo, cuando un usuario quiere cambiar su contraseña, ejecuta el comando passwd. El programa passwd es propiedad de la cuenta raíz y está marcado como setuid, por lo que al usuario se le otorga temporalmente acceso root para ese propósito muy limitado.

Ver el permiso setuid de un archivo

Al ver los permisos de un archivo con el comando ls -l, el permiso setuid se muestra como una "s" en la posición de bit "ejecución del usuario". Por ejemplo:

ls -l / usr / bin / passwd
-rwsr-xr-x 1 raíz 54192 20 de noviembre 17:03 / usr / bin / passwd

Establecer el permiso setuid de un archivo

Para establecer el permiso setuid para un archivo ejecutable, use el identificador de permiso u + s con el comando chmod:

chmod u + s myfile

Los archivos no ejecutables se pueden marcar como setuid, pero no tiene ningún efecto; marcarlos como setuid no los convierte automáticamente en ejecutables. En este caso, el bit de permiso aparece como una "S" mayúscula. Por ejemplo:

ls -l myfile
-rw-r - r-- 1 usuario 0 mar 6 10:45 myfile
chmod u + s myfile
ls -l myfile
-rwSr - r-- 1 usuario 0 mar 6 10:45 myfile

Sin embargo, si luego configura el archivo para que sea ejecutable por el usuario con el permiso u + x, el permiso setuid entrará en vigencia. Luego se representará en la lista con una "s" minúscula:

chmod u + x myfile
ls -l myfile
-rwsr - r-- 1 usuario 0 mar 6 10:45 myfile

Setgid

Setgid es el equivalente de setuid para grupos. Si se establece el bit, otorga permiso al grupo que posee el archivo. En una lista de archivos, el carácter "s" (s minúscula) aparece en la posición "ejecución de grupo" de la cadena de permisos del archivo. Si se establece el bit setgid, pero el grupo no tiene permisos de ejecución para el archivo o directorio, se muestra una "S" mayúscula. Este carácter en mayúscula indica que el bit está establecido, pero no tiene ningún efecto.

En la salida de ls -l que se muestra aquí, la "s" minúscula indica que el bit setgid está establecido para el archivo de la lista. Cualquier usuario que acceda a ese archivo lo hará como si fuera un miembro del grupo propietario.

chmod g + s myfile2
ls -l myfile2
-rw-r-sr-- 1 usuario mygroup 0 6 de marzo 10:46 myfile2

Si el bit setgid se establece para un directorio, cualquier archivo nuevo creado en ese directorio será propiedad del grupo propietario del directorio, en lugar del grupo del usuario. Los archivos movidos o copiados desde otra ubicación no tendrán su ID de grupo modificada.