Estaba experimentando un poco y noté algo extraño:configurar el bit setuid en una copia de bash ubicada en /usr/bin/bash-test
parecía no tener efecto. Cuando ejecuté una instancia de bash-test
, mi directorio de inicio no se configuró en /root
y cuando ejecuté el whoami
comando de bash-test
, mi nombre de usuario no se informó como root
, sugiriendo que bash-test
no se estaba ejecutando como root. Sin embargo, si configuro el bit setuid en whoami
, se me informó como root en cualquier shell, como se esperaba.
Intenté configurar el bit setuid en /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? ¿Selinux podría tener algo que ver con esto?
Respuesta aceptada:
La explicación es un poco molesta:bash en sí mismo es la razón. strace
es nuestro amigo (debe ser raíz de SUID para que esto funcione):
getuid() = 1000
getgid() = 1001
geteuid() = 0
getegid() = 1001
setuid(1000) = 0
setgid(1001) = 0
bash detecta que se ha iniciado la raíz SUID (UID! =EUID) y usa su poder de raíz para desechar este poder, restableciendo EUID a UID. Y más tarde incluso FSUID, solo para estar seguro...:
getuid() = 1000
setfsuid(1000) = 1000
getgid() = 1001
setfsgid(1001) = 1001
Al final:ninguna posibilidad. Tienes que iniciar bash con la raíz UID (es decir, sudo).
Editar 1
La página del manual dice esto:
Si el shell se inicia con la identificación de usuario (grupo) efectiva que no es igual a la identificación de usuario (grupo) real y no se proporciona la opción -p, no se leen los archivos de inicio, las funciones de shell no se heredan del entorno, SHELLOPTS , BASHOPTS, CDPATH y GLOBIGNORE, si aparecen en el entorno, se ignoran y el ID de usuario efectivo se establece en el ID de usuario real. Si se proporciona la opción -p en la invocación, el comportamiento de inicio es el mismo, pero la identificación de usuario efectiva no se restablece.
Pero esto no funciona para mí. -p
ni siquiera se menciona entre las opciones de inicio. También probé --posix
; tampoco funcionó.