Setuid
De Wikipedia, la enciclopedia libre
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.
Setuid y setgid se necesitan para tareas que requieren privilegios más altos que aquellos de los que dispone un usuario común, como cambiar su contraseña. Algunas tareas que requieren privilegios elevados pueden no ser obvias, sin embargo (por ejemplo, el comando ping, que debe enviar y escuchar paquetes de control por una interfaz de red).
[editar] 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, sin embargo).
Por ejemplo el bit setuid se utiliza en el fichero /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/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 fuero 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.
[editar] Setuid en directorios
Los indicadores setuid y setgid en un directorio tienen un significado completamente distinto. Los directorios con permiso setuid/setgid fuerzan a todos los archivos y subdirectorios creados en ellos a pertenecer al dueño del directorio/grupo y no al usuario/grupo del usuario que crea el archivo.