Setuid

Setuid y Setgid son términos de Unix, abreviaturas para "Set User ID" y "Set Group ID", respectivamente. Setuid, también llamado a veces "suid", y "setgid" son permisos de acceso que pueden asignarse a archivos o directorios en un sistema operativo basado en Unix. Se utilizan principalmente para permitir a los usuarios del sistema ejecutar binarios con privilegios elevados temporalmente para realizar una tarea específica.

Si un fichero tiene activado el bit "Setuid" se identifica con una “s” en un listado de la siguiente forma:

-rwsr-xr–x 1 root shadow 27920 ago 15 22:45 /usr/bin/passwd

Esta propiedad es necesaria para que los usuarios normales puedan realizar tareas que requieran privilegios más altos que los que dispone un usuario común. Algunas tareas que requieren privilegios elevados pueden no ser obvias (por ejemplo, el comando ping, que debe enviar y escuchar paquetes de control por una interfaz de red).

Setuid en ejecutables

Normalmente este bit se activa en ejecutables. Cuando a un ejecutable binario se le asigna el atributo setuid, usuarios normales del sistema pueden ejecutar ese archivo y obtener privilegios del usuario que posee dicho archivo (generalmente, root) en el proceso creado. Cuando el proceso obtiene privilegios de administrador, la aplicación puede realizar tareas en el sistema que usuarios normales generalmente no podrían hacer. El sistema impedirá al usuario que invocó el ejecutable alterar el nuevo proceso de ningún modo, como utilizando ptrace, LD_LIBRARY_PATH o enviarle señales a él (señales desde la propia terminal sí se aceptarán).

Por ejemplo el bit setuid se utiliza en el fichero /usr/bin/passwd para que todo el mundo pueda cambiar su contraseña de forma controlada. Pudiendo ejecutar este programa se consigue que un usuario pueda escribir en el fichero de claves (/etc/shadow, no confundirlo con /etc/passwd) pero sin tener que dar permisos de escritura al fichero, lo cual seria un gran agujero de seguridad

Aunque la característica setuid es muy útil en muchos casos, puede plantear un riesgo de seguridad si el atributo setuid se asigna a programas ejecutables que no fueron diseñados cuidadosamente. Los usuarios pueden explotar vulnerabilidad en programas defectuosos para conseguir privilegios elevados permanentemente, o ejecutar de forma no intencionada un troyano.

El atributo setgid permitirá cambiar los privilegios basados en el grupo en un proceso, del mismo modo que setuid hace para privilegios basados en el usuario.

Other Languages
čeština: Setuid
Deutsch: Setuid
English: Setuid
euskara: Setuid
français: Setuid
italiano: Setuid e setgid
日本語: Setuid
polski: Setuid
português: Setuid
русский: Suid
slovenčina: Setuid