Setuid
100%

Permisos · Lección 5

Setuid

Aprende cómo el bit de modo set-user-ID afecta a los programas ejecutables y por qué requiere una revisión cuidadosa de seguridad.

Algunos programas necesitan un acceso estrictamente controlado que sus usuarios no tienen normalmente. En un archivo normal ejecutable, el bit set-user-ID puede hacer que un proceso nuevo reciba como ID de usuario efectivo el del propietario del archivo. El programa puede realizar entonces operaciones autorizadas para esa identidad y conservar al mismo tiempo información sobre quien lo invocó.

Setuid no es una instrucción general para «ejecutar como root». Su efecto depende del propietario del ejecutable, el sistema operativo, el sistema de archivos y sus opciones de montaje y la forma en que el programa gestiona sus credenciales.

Reconocer setuid

En sistemas que usan un ejecutable passwd con setuid, un listado largo puede parecerse a este:

$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 68248 Jan 10 09:30 /usr/bin/passwd

La s minúscula en la posición de ejecución del propietario significa que están establecidos tanto setuid como la ejecución del propietario. Si setuid está presente pero no lo está la ejecución del propietario, ls -l muestra una S mayúscula en esa posición.

No des por hecho que todas las distribuciones tienen el mismo modo o diseño de autenticación. Consulta el sistema real en vez de confiar en el ejemplo.

¿Qué indica una s minúscula en la posición de ejecución del propietario?

Comprender el cambio de credenciales

Cuando el kernel respeta setuid durante la ejecución, el proceso nuevo suele recibir un ID de usuario efectivo basado en el propietario del ejecutable. En un programa propiedad de root, esto puede proporcionar acceso autorizado para root, pero solo mientras se ejecuta el programa y únicamente mediante las operaciones que realiza su código.

Este mecanismo puede permitir que un programa cuidadosamente escrito valide una solicitud y realice un cambio restringido en un estado protegido. Por ejemplo, una utilidad local para cambiar contraseñas puede necesitar acceso controlado a datos de autenticación que los usuarios normales no pueden editar directamente. Las implementaciones modernas también dependen de PAM, bloqueo de archivos, políticas y otras protecciones; setuid por sí solo no explica todo el flujo.

Cuando se respeta un ejecutable setuid, ¿qué identidad se obtiene principalmente del propietario del archivo?

Establecer y eliminar el bit

Establece setuid simbólicamente con:

$ sudo chmod u+s myfile

En notación octal, setuid aporta 4 en un dígito inicial de bits especiales:

$ sudo chmod 4755 myfile

Aquí, el 4 inicial establece setuid y 755 establece los bits normales de propietario, grupo y otros. Elimina setuid sin cambiar el resto del modo mediante chmod u-s myfile.

¿Qué valor octal inicial representa el bit especial setuid?

Tratar setuid como sensible para la seguridad

Un fallo en un programa setuid con privilegios puede convertirse en una vía de escalada de privilegios. Estos programas deben validar la entrada, controlar el entorno y las rutas en las que confían, evitar comportamientos inseguros de subprocesos, minimizar el código con privilegios y abandonarlos tan pronto como sea posible.

Linux no suele respetar setuid en scripts interpretados porque hacerlo de forma segura plantea problemas de carreras y del intérprete. Los sistemas de archivos montados con nosuid también suprimen los efectos setuid y setgid. Prefiere mecanismos más limitados, como operaciones mediadas por servicios, políticas sudo de ámbito reducido o capacidades, cuando se adapten al requisito.

Nunca añadas setuid a un shell, intérprete o programa copiado arbitrario como experimento en un sistema compartido. Audita los archivos setuid existentes y practica únicamente en un entorno aislado y desechable.

¿Cuál es el propósito de montar un sistema de archivos con nosuid?

Lección completada

Has completado Setuid

Ahora puedes reconocer setuid y explicar sus implicaciones de credenciales y seguridad.

  • Localiza s o S en la posición de ejecución del propietario.

  • Relaciona la ejecución setuid con la identidad de usuario efectiva del propietario del ejecutable.

  • Establece o elimina el bit mediante modos chmod simbólicos u octales.

  • Trata todo ejecutable con privilegios como código sensible para la seguridad.

Guarda tu progreso

Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.

Crear una cuenta gratuita
Siguiente Lección
Volver a Permisos