Esta es una respuesta tardía, pero puede ejecutarla en cada inicio de sesión Y hacer que se ejecute como root (o cualquier otro usuario que desee), haciendo lo siguiente:
- Escriba su secuencia de comandos, con los comandos que desea ejecutar como root, y guárdelo, por ejemplo. como
/path/to/root-script.sh
.
Hacer que root (o el usuario deseado) sea el propietario del script.
chown root:root /path/to/root-script.sh`
Establezca el bit setuid en el script, con otros permisos deseados. (Asegúrate de que no se pueda escribir universalmente, etc.)
chmod 4755 /path/to/root-script.sh
los 4
significa establecer el bit setuid, que hará que el script se ejecute como el propietario del script. Esto es lo que sudo
Se utiliza para garantizar la ejecución como root.
Para asegurarse de que se ejecuta en cada inicio de sesión, ejecute el conjunto de bits adherentes root-script.sh
desde dentro /etc/profile
. los /etc/profile
debe ejecutarse independientemente del shell utilizado por el usuario. Tenga en cuenta que esto solo se aplicará a los inicios de sesión interactivos sin embargo.
Editar . Como lo señaló Scott en los comentarios, esta solución NO funciona generalmente en ningún sistema moderno con cualquier secuencia de comandos shebang que no sea Perl & lt; 5.12.0. Los núcleos modernos ignorarían los scripts con un bit setuid a menos que hayan sido parcheados, lo cual no sería recomendado por razones de seguridad.
Por el contrario, setuid solo funciona generalmente en binarios compilados y [versiones antiguas de Perl] [ https://stackoverflow.com/questions/21597300/can-i-setuid-for-perl-script] que puede usar (Perl & lt; 5.12.0) con suidperl
.
Esta pregunta de Unix / Linux SE tiene una respuesta completa de por qué setuid se ignora para los scripts de shebang, con su resumen TL; DR:
Setuid Shebang es inseguro pero generalmente ignorado. Si ejecuta un programa
con privilegios (ya sea a través de sudo o setuid), escriba código nativo o
Perl, o inicie el programa con un envoltorio que desinfecte el
entorno (como sudo con la opción env_reset).
/home/user/bin/script
como raíz Después de hacer los pasos 1-3 anteriores, intenté agregar una línea con/home/user/bin/script
a/etc/profile
así como reemplazarlo consudo /home/user/bin/script
. En ambos casos no tuvo el efecto deseado. Qué estoy haciendo mal ?