Cómo hacer que un programa se ejecute con privilegios de root sin usar su o sudo

8

Tengo un bashscript que necesita ejecutarse con privilegios de root , pero debe ser invocado por el usuario normal.

La parte difícil es que el script no debe pedir una contraseña, y no quiero usar el archivo sudoers . Me gustaría evitar usar sudo o su .

es posible?

Stefan
fuente
posible duplicado de Permitir setuid en scripts de shell
Stefan

Respuestas:

9

Si no se tratara de un script bash sino de una aplicación normal, le otorgaría la propiedad a root y establecería el bit setuid en la aplicación. Luego, después de la ejecución, el usuario efectivo bajo el cual se ejecuta la aplicación es root. Sin embargo, debido a problemas de seguridad, esto está prohibido en muchos sistemas para scripts de shell. Esta pregunta aquí en unix.stackexchange.com maneja formas de superar esto.

fschmitt
fuente
Bien, solo estaba publicando un enlace a eso. La respuesta de Hemant es una buena solución
Michael Mrozek
¿Ruby contaría como un script de shell?
Stefan
1
@Stefan Sí, todo lo que se ejecuta a través de un intérprete lo hace, porque no se ejecuta el script en sí, es el intérprete de ruby, que no está configurado. Necesitas un binario real para usar setuid
Michael Mrozek
2
Desearía poder rechazar esto, pero desafortunadamente me faltan 25 puntos de reputación. Permitir que los usuarios normales ejecuten un script bash como root es una idea MUY MALA, a menos que sepa exactamente lo que está haciendo (y si tiene que preguntar cómo hacerlo, no lo sabe). Si el OP publicó su script aquí, probablemente encontraría al menos 3 formas de explotarlo. Hay una razón por la cual casi todas las distribuciones hacen esto difícil.
Kim
Uno de los principios fundamentales de Unix es: "Darle al usuario la oportunidad de pegarse un tiro en el pie" :-)
fschmitt
1

Usa sudo. Si no desea tener que llamar sudo /path/to/myscript, escriba un contenedor de una línea exec sudo /path/to/myscript "$@". Vea Permitir setuid en los scripts de shell , particularmente la respuesta de Maciej Piechotka sobre el uso de sudo y mi discusión más general sobre los programas setuid .

Gilles 'SO- deja de ser malvado'
fuente
La idea es no tener que usar sudo.
Alexej Magura
@AlexejMagura Sudo es la solución más fácil. Esto es difícil de hacer sin sudo (a menos que esté dispuesto a conformarse con una solución insegura, en cuyo caso también podría dar a todos la contraseña de root).
Gilles 'SO- deja de ser malvado'