Estaba experimentando un poco y noté algo extraño: establecer el bit setuid en una copia de bash ubicado en /usr/bin/bash-testparece no tener ningún efecto. Cuando ejecuté una instancia de bash-test, mi directorio de inicio no estaba configurado /rooty cuando ejecuté el whoamicomando bash-test, mi nombre de usuario no se informó como tal root, lo que sugiere que bash-testno 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/bashtambié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.
stracees 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í.
-pni 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 (
$HOMEconfiguración del shell, lo que sea), se ejecuta con poderes de raíz (es decir, puede eliminar cualquier archivo, cambiar cualquier permiso, etc.).fuente