SetUid, Setgid y Sticky Bit explicados

SetUid, Setgid y Sticky Bit explicados
Linux tiene 3 tipos de acceso a archivos y directorios: lectura, escritura y permisos de ejecución.

El permiso de lectura otorga a los usuarios acceso a archivos de lectura mientras se escribe permisos permiten a los usuarios editar o eliminar archivos, los permisos de ejecución les permiten ejecutar archivos.

Estos permisos se pueden aplicar con diferencias para el propietario del archivo, los usuarios que pertenecen al grupo del archivo y a todos los usuarios (no el propietario ni los usuarios del grupo).

El bit setuid, setgid y sticky le permite implementar restricciones o privilegios adicionales sin cambiar la tabla de permisos.

Los permisos regulares de Linux se explicaron profundamente en los permisos de Linux explicados, una lectura recomendada antes de continuar con este tutorial. El tutorial actual se centra en las banderas setuid, setgid y pegajosas para "heredar" el propietario del archivo o los permisos de grupo a los usuarios con acceso restringido y evitar que los usuarios no privilegiados eliminen archivos que no poseen.

Comprender el bit setuid:

La siguiente captura de pantalla muestra el contenido del directorio Linuxhintsetuid y los permisos de archivo:

Como puede ver, todos los archivos pertenecen al usuario y al grupo Linuxhint; el archivo tutorial.TXT tiene permisos de lectura y escritura para el propietario, permisos de lectura para usuarios del mismo grupo y no hay permisos para otros usuarios.

Si un usuario que no sea el propietario del archivo, que no pertenece al grupo, intenta leer el archivo, fallará debido a la falta de permisos para todos los usuarios u otros usuarios.

La siguiente captura de pantalla muestra al usuario torvalds intentó acceder sin éxito acceder al tutorial.TXT archivo.

Ahora supongamos que el usuario Linuxhint quiere mantener tutorial.Txt restringido al permitir que los usuarios lo lean solo a través de una aplicación específica. Esto se puede lograr usando la bandera setuid.

En otras palabras, el usuario torvalds no podrá leer el archivo tutorial.TXT. Aún así, él correrá el lector-propiedad del usuario Linuxhint, heredar sus permisos durante el proceso de ejecución. Esto es posible si el propietario agrega el setuid Bit a la tabla de permisos del archivo, instruyendo al archivo siempre procesado como por el propietario y con los privilegios del propietario, incluso si lo ejecuta otro usuario como torvalds.

NOTA: Puede usar el código C a continuación para reproducir los siguientes ejemplos. Compilar corriendo código CC.lector c -o

Código de aplicación del lector:

#incluir
#Include // para la función EXIT ()
int main ()
char c [1000];
Archivo *fptr;
if ((fptr = fopen ("tutorial.txt "," r ")) == null)
printf ("Error! El archivo no se puede abrir.");
// El programa sale si el puntero del archivo devuelve nulo.
salida (1);

dormir (5);
// lee texto hasta que se encuentre Newline
fscanf (fptr, "%[^\ n]", c);
printf ("Datos del archivo: \ n%s", c);
FCLOSE (FPTR);
regresar 0;

Antes de continuar, veamos qué sucede si el usuario Torvalds, que tiene permisos para ejecutar la aplicación lector, ejecuta el lector Antes de que Linuxhint aplique la bandera setUid.

Como puede ver, Torvalds logró ejecutar el lector, un programa C diseñado para leer el tutorial.txt con la siguiente tabla de permisos, pero el lector no le otorgó acceso a tutorial.TXT porque torvalds no tiene permisos para leerlo.

Lector La tabla de permisos se muestra a continuación:

-RWXR-XR-X 1 Linuxhint Linuxhint Reader

Ahora veamos qué pasa cuando Linuxhint agrega el indicador setUid al lector tabla de permisos ejecutando:

lector chmod u+s

Si tu corres LS -L , Notará que la tabla de permisos cambió y el nombre del programa aparece en rojo, alertándole sobre el posible riesgo. La nueva mesa de permisos se ve así:

-RWSR-XR-X

El nuevo S Destacé en azul muestra que el archivo tiene el indicador SetUid; Cada vez que se ejecuta el archivo, el proceso pertenecerá al propietario del archivo independientemente de quién ejecuta el programa. Dado que el propietario ejecutará el archivo antes del sistema, la ejecución heredará los permisos del propietario. Por eso ahora, después Linuxhint Se agregó el indicador SetUid, el usuario torvalds Debe poder leer tutorial.txt a través del lector.

NOTA: Torvalds puede ejecutar el lector Porque todos los usuarios tienen derechos de ejecución; si Linuxhint elimina los permisos de ejecución para todos los usuarios, torvalds no podrá ejecutarlo.

El setuid El indicador define el archivo como por el propietario, y el usuario que lo ejecuta heredará los permisos del propietario, pero SetUid no define quién puede ejecutar el archivo.

Como puede ver, Torvalds logró leer "Datos del archivo:

No deberías poder leer esto ".

Si mientras Torvalds ejecuta el script, ejecuto el siguiente comando PS, verá una diferencia entre el usuario real (Ruser) y el usuario efectivo (usuario) del proceso 4332 (lector).

PS -AO PID, UID, Ruser, usuario, Rgroup, Egroup, Comando

La captura de pantalla anterior muestra a pesar del usuario real que se ejecuta lector es torvalds u otro usuario, el archivo siempre se procesa como por Linuxhint, con sus permisos, y es por eso que Torvalds puede ver el archivo solo a través de la aplicación.

La bandera setUid se puede eliminar ejecutando:

chmod u-s

Comprender el bit setgid:

SetGID es similar a SetUid, pero en lugar de cambiar el usuario que procesa el archivo, reemplaza el grupo efectivo para el grupo de archivos, otorgando acceso de acuerdo con los permisos del grupo.

Si el bit setGID se aplica a un directorio, todos los archivos creados dentro del directorio pertenecerán al grupo del directorio.

La siguiente captura de pantalla muestra que Torvalds no tiene permiso para leer el tutorial.txt, solo el propietario y el grupo pueden leer el archivo. Incluso con un lector, Torvalds no puede leer el archivo porque no tiene permisos, y no se agregó un bit setUid.

Veamos qué sucede después de que Linuxhint agrega setgid:

lector de chmod g+s


-RWXR-SR-X: Como puede ver en la tabla de permisos, ahora el S está en la columna del grupo, lo que significa que cuando se ejecuta el programa, siempre se ejecutará con sus propios privilegios de grupo.

Así que veamos qué sucede cuando Torvalds intenta acceder al tutorial.txt nuevamente usando el lector:

Torvalds logró leer el tutorial.TXT; Veamos qué muestra el comando PS en el proceso del lector:

PS -AO PID, UID, Ruser, usuario, Rgroup, Egroup, Comando

Como puede ver en el proceso 6713, el usuario que ejecuta el archivo es Torvalds, pero el grupo efectivo es Linuxhint, el grupo del archivo; Es por eso que Torvalds podría acceder al tutorial.txt con los permisos grupales del lector.

El bit SetGID se puede eliminar ejecutando:

chmod g-s

Comprender el bit pegajoso:

Otro bit de permiso es el bit pegajoso, que, si se define, evita que los usuarios no privilegiados eliminen el contenido. Si se aplica el bit pegajoso, solo el propietario o la raíz pueden eliminar archivos, pero no todos los usuarios, incluso si tienen permisos de escritura.

El siguiente ejemplo muestra que el usuario Linuxhint agrega la broca adhesiva al directorio actual:

chmod +t .

DRWXR-XR-T: Como puede ver ahora, hay un T Al final de la tabla de permisos del Linuxhintsetuid directorio. Esto significa que los usuarios no pueden eliminar archivos que no poseen dentro del directorio, incluso si tienen permisos de escritura.

La siguiente captura de pantalla muestra permisos para un archivo llamado "algo"Bajo el directorio Linuxhintsetuid Con la broca especial:

Como puede ver, a pesar de tener permisos de escritura tanto en el directorio como en el archivo, Torvalds no puede eliminar el archivo algo:

Espero que hayas encontrado este tutorial sobre setuid, setgid y sticky bit útil. Siga a Linuxhint para obtener más consejos y tutoriales de Linux.