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?


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.


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 .


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'
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.