Permisos especiales Suid, Guid y Sticky Bit

Permisos especiales Suid, Guid y Sticky Bit
En Linux, todo es un archivo y todo tiene propietarios. El propietario especial es, conocido como la raíz, también tiene permisos especiales para ejecutar cualquier cosa y todo. Todos los demás tienen privilegios limitados y acceso muy limitado a archivos y carpetas. Para elevar nuestros privilegios, uno debe usar el comando sudo. Sin embargo, no es una buena idea dar la contraseña de root a las personas aleatorias cada vez que necesitan hacer algo que requiera privilegios más altos. Entonces, ¿qué puedes hacer entonces?? Bueno, podemos usar lo que se conoce como Suid, Guid y Sticky Bits. En este tutorial, revisaremos el concepto de Suid, Guid y Sticky Bits.

Suid

Suid o establecer el propietario de la identificación de usuario es un indicador de bits 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.

Usemos un ejemplo para demostrar Suid. Supongamos que hay tres usuarios: Kalyani, Sara y John. Supongamos que Kalyani tiene acceso completo a la raíz; es decir, ella puede usar el comando sudo con una contraseña válida. Supongamos además que tanto Sara como John tienen privilegios menos o muy limitados en la máquina. Ahora suponga que tenemos un ejecutable (ex: SU, utilizado para cambiar de usuario) que pertenece a Root. Eso sí, esto es importante; pertenece a la raíz y, por lo tanto, solo la raíz tiene los permisos para ejecutarla!!!

Sin embargo, digamos que lo asignamos Suid. Porque lo asignamos Suid, ese ejecutable, su, no se ejecuta como Sara o John, sino como una raíz. Técnicamente, Sara puede ejecutar sus archivos, y a John se le permite ejecutar sus archivos. No se les permite ejecutar archivos que pertenecen a la raíz. Si quieren ejecutarlo, por lo general, deberá escribir el comando sudo. Pero aquí, Sara dirige un archivo que no posee! Y entonces, lo que notamos es que cuando se usa Suids, el ejecutable se ejecuta como el propietario del archivo, la raíz y no la persona que lo ejecuta (ex: Sara o John).

Por ejemplo, tomemos el comando passwd. El comando passwd se usa para cambiar la contraseña de un usuario. Ahora, si miramos el archivo en detalle, notaremos que en lugar de una X que representa la ejecución, habrá una "S". La "s" aquí significa Suid. Además, notará que el archivo pertenece a root. Esto técnicamente significa que solo la raíz tiene el permiso para ejecutarlo; Sin embargo, notará que todos pueden ejecutar el comando. Como tal, con el conjunto de permisos Suid, este ejecutable en particular puede ser ejecutado por Sara y John cuando en realidad no les pertenece! Tanto Sara como John obtienen los mismos permisos que la raíz al ejecutar este ejecutable en particular. Esto es así incluso cuando tanto Sara como John no tienen acceso a la raíz y no tienen privilegios raíz.

Entonces, en resumen, debido a Suid, tanto Sara como John ejecutarán el comando PASSWD como si fueran su dueño, Root!

Ahora suponga por un momento que elimino el Suid del comando PASSWD. Veamos qué sucederá (en la imagen a continuación).

Ahora veamos qué sucederá cuando intentemos usar el comando PASSWD (una vez que Suid ha sido eliminado):

Como puede ver, cuando quité el suid del comando passwd y luego intenté ejecutarlo como Sara, se negó a ejecutarlo. Resultó en un error!

Suid no es algo para tomar a la ligera y, como tal, uno debe tener mucho cuidado al asignarlo. De hecho, hay ataques especiales en ciberseguridad que apuntan con precisión a los ejecutables que se ejecutan en Suid.

Para encontrar esos ejecutables que tienen un conjunto de Suid, escribimos:

# para obtener todos los Suids
Find /-Perm -4000 2> /dev /null
# para obtener todos los GUID
Find /-Perm -2000 2> /dev /null
# Encuentra todos los pedazos pegajosos
Find /-Perm -1000 2> /dev /null

Configuración Suid

Ahora necesitamos aprender a configurar Suids. Hay dos formas de usar Chmod: numérico y simbólico.

Usando el método numérico:

Usamos el siguiente código para establecer permisos:

SetUid = 4
Setgid = 2
Sticky = 1
Ninguno = 0
Leer = 4
Escribir = 2
Ejecutar = 1

Durante los permisos regulares, escribiríamos lo siguiente:

CHMOD 0777 Ejecutable

Este último implicaría que le damos permisos de lectura, escritura y ejecutación al usuario, el grupo y otros. Ahora, para usar un Suid, escribiríamos lo siguiente:

CHMOD 4XXX Ejecutable

Ex:

CHMOD 4744 Script

Aquí, lo que tenemos que tener en cuenta es el 4 en la primera posición. El 4 da permisos Suid.

Aquí, se vería así:

La X para la ejecución será reemplazada por una "S". Ahora, si el archivo no se ha establecido como un ejecutable, entonces será un capital s ("s"). Así que aquí tenemos:

-RWSR-R--

El "S" significa que SUID se ha establecido (y el archivo es ejecutable)!

Usando el método simbólico:

Lo mismo puede llevarse a cabo utilizando el método simbólico también:

CHMOD U+S Ejecutable

Ex:

script chmod u+s

Ahora aquí, hay momentos en los que puedes ver una "s" capital ". El capital "s" significa que el archivo aún no es ejecutable.

Para revocar los derechos Suid, tipo:

CHMOD U-S Ejecutable

Ex:

script chmod u-s

Guía

GUID es similar a Suid. En el Suid, el ejecutable en cuestión se ejecuta con los privilegios del propietario del archivo. En el GUID, si es un ejecutable, se ejecuta con los permisos del grupo. Si es un directorio, resulta en todos los archivos y directorios nuevos creados para pertenecer al grupo.

Para establecer el GUID utilizando el método numérico:

CHMOD 2XXX Ejecutable

Ex:

CHMOD 2744 Script

Aquí, el punto a tener en cuenta es el 2 (en la primera posición), que significa GUID.

Para establecer el GUID utilizando el método simbólico:

CHMOD G+S Ejecutable

Ex:

script chmod g+s

Sin embargo, aquí, primero veo:

Aquí, hay una "s" capital ". Esto significa que el archivo no es ejecutable. Esto se puede solucionar fácilmente ejecutando el siguiente código:

CHMOD +X Ejecutable

Ex:

chmod +x script

Bits pegajosos

Bits pegajosos se aplican a los directorios. Cuando los bits adhesivos se establecen en un directorio en particular, cualquier usuario que tenga acceso al directorio y su contenido solo puede eliminar sus propios archivos y no puede tocar o eliminar archivos que pertenecen a otra persona. Los bits pegajosos se usan típicamente cuando se usa una carpeta compartida. Ninguna persona puede eliminar el archivo de otro dentro de la carpeta compartida incluso si el permiso es 777.

Para configurar bits pegajosos utilizando el método numérico:

CHMOD 1XXX Ejecutable

Ex:

CHMOD 1744 Script

Aquí, usamos el 1 en la primera posición para denotar que será un poco pegajoso.

Para establecer bits pegajosos utilizando el método simbólico:

CHMOD O+T Ejecutable

Ex:

script chmod o+t

Los permisos son una parte crucial de Linux. El comando chmod se usa típicamente para establecer y modificar permisos simples. Sin embargo, hay permisos especiales que uno puede establecer usando el comando chmod también. Estos permisos especiales se conocen como Suid, Guid y Sticky Bit. Cuando se aplica en un ejecutable en particular, los permisos especiales se ejecutan con los permisos del propietario del archivo o el grupo. En otras palabras, eleva los privilegios del usuario al del propietario, generalmente root, temporalmente cuando se usa ese ejecutable. Sin embargo, el uso incorrecto de los permisos especiales puede convertirse en una amenaza grave. De hecho, en el campo de la ciberseguridad, se utiliza como una posible vulnerabilidad para aumentar los privilegios en una máquina. Así que úsalo sabiamente y con mucho, con mucho cuidado!

Codificación feliz!