Tengo un script bash
que debe ejecutarse con privilegios de root , pero debe ser invocado por el usuario normal.
La parte difícil es que el script no debería pedir una contraseña y no quiero usar el archivo sudoers. Me gustaría evitar usar Sudo o s = .
Es posible?
Si no fuera un script bash sino una aplicación normal, le daría la propiedad a root y establecería el bit setuid en la aplicación. Luego, al ejecutarse, el usuario efectivo bajo el que se ejecuta la aplicación es root. Sin embargo, debido a problemas de seguridad, esto está prohibido en muchos sistemas para los scripts de Shell. Esta pregunta aquí en unix.stackexchange.com maneja formas de superar esto.
Usa Sudo. Si no quiere tener que llamar a Sudo /path/to/myscript
, escriba un contenedor de una línea exec Sudo /path/to/myscript "[email protected]"
. Vea Permitir setuid en scripts de Shell , particularmente Respuesta de Maciej Piechotka sobre el uso de Sudo y mi discusión más general sobre programas setuid .