Estaba experimentando un poco y noté algo extraño: establecer el bit setuid en una copia de bash ubicado en /usr/bin/bash-test
parece no tener ningún efecto. Cuando ejecuté una instancia de bash-test
, mi directorio de inicio no estaba configurado /root
y cuando ejecuté el whoami
comando bash-test
, mi nombre de usuario no se informó como tal root
, lo que sugiere que bash-test
no se estaba ejecutando como root. Sin embargo, si configuré el bit setuid whoami
, se me informó que era root en cualquier shell, como se esperaba.
Intenté configurar el bit setuid /usr/bin/bash
también y observé el mismo comportamiento.
¿Por qué bash no se ejecuta como root cuando configuro el bit setuid en él? ¿Podría Selinux tener algo que ver con esto?
Respuestas:
La explicación es un poco molesta: bash es la razón.
strace
es nuestro amigo (debe ser SUID root para que esto funcione):bash detecta que se ha iniciado la raíz SUID (UID! = EUID) y usa su poder raíz para desechar esta energía, restableciendo EUID a UID. Y más tarde incluso FSUID, solo para estar seguro ...:
Al final: no hay posibilidad. Debe comenzar bash con la raíz UID (es decir, sudo).
Editar 1
La página del manual dice esto:
Pero esto no funciona para mí.
-p
ni siquiera se menciona entre las opciones de inicio. También lo intenté--posix
; tampoco funcionó.fuente
En cualquier caso, un programa raíz SUID no se ejecuta con el entorno de la raíz (
$HOME
configuración del shell, lo que sea), se ejecuta con poderes de raíz (es decir, puede eliminar cualquier archivo, cambiar cualquier permiso, etc.).fuente