¿Cómo ejecutar un programa como root sin "sudo"?

10

Tengo un cierto programa binario en OS X que solo se puede ejecutar como root.

Estoy cansado de anteponer sudocada vez que lo invoco y escribo la contraseña, y me gustaría que se ejecute automáticamente como root cuando lo invoco regularmente, sin pedir una contraseña.

El propietario del programa es root y su grupo es wheel.

Intenté chmod ug+sestablecer el userid y groupid después de la ejecución en root / wheel, pero cuando ejecuto el programa sin sudo todavía se queja de que solo puede ejecutarse con sudo o como root.

UrEl
fuente
¿Se puede ejecutar en un momento determinado o cuando ocurre algún evento?
user151019
99
Los viejos gurús de Unix sugerirían que invocar una operación solo de raíz a mano de forma regular significa que lo estás haciendo mal. ¿Es esto algo que se puede automatizar? ¿O correr como un demonio? Más detalles pueden aportar sugerencias para soluciones de un tipo diferente.
dmckee --- ex gatito moderador
¿El programa es realmente propiedad de root? Setuid / gid usará el usuario / grupo del archivo.
Daniel Beck
2
... donde "más detalles" también incluye cosas como si el binario de este programa está en un volumen montado en NFS y si usa la nosuidopción de montaje ... además de por qué debe ejecutar regularmente un programa como superusuario.
JdeBP
@dmckee muchos usuarios de Mac ejecutan software de servidor en su estación de trabajo y a menudo está configurado para requerir root para cosas que realmente no deberían necesitarlo ... pero reconfigurar una pila LAMP para que se ejecute sin root es una molestia. Por otro lado, reiniciar apache 20 veces al día y escribir sudo cada vez también es un fastidio. Esta es una solución simple.
Abhi Beckert

Respuestas:

2

¿Está seguro de que el programa que está intentando ejecutar es en realidad un binario y no un script de shell? La mayoría de los shells ignoran los scripts suid porque son muy, muy difíciles de hacer de forma segura. Una manera fácil de verificar es usar el filecomando en el programa.

KeithB
fuente
17

Media solución a su problema:

en el archivo sudoers, agregue lo siguiente:

username ALL= NOPASSWD: /path/to/command

Luego, desde la línea de comando, puede escribir:

sudo command

y ejecutará el comando sin solicitar su contraseña. Este comando se ejecutará como root.

Tenga en cuenta que deberá reemplazar el nombre de usuario con su nombre de usuario real.

Walter
fuente
Asombrado de encontrar la mejor respuesta en la parte inferior. ¡Gracias!
CDR
Para su información, para resolver la otra mitad (sin tener que escribir el comando sudo) cree un alias de shell que incluya sudo en el comando (como surm = sudo rm "$ @")
Walter
4

Si realmente no puede invocarlo como un demonio por alguna razón (esta pregunta sería relevante en ese caso) , este método puede ser pirateado juntos, pero es bastante sucio y no es seguro en absoluto.

El concepto es lanzarlo con un AppleScript. Primero necesitará saber cómo invocar el proceso desde la línea de comandos (que si ya está usando sudo, significa que debe estar listo). Lanzará ese proceso usando el do shell scriptcomando, y en lugar de usar sudo, escribirá sus credenciales en el AppleScript:

do shell script "/path/to/your/executable/here" user name "me" password "mypassword" with administrator privileges

Reitero la parte de que esto es inseguro: ESTO SIGNIFICA QUE SUS CREDS ADMINISTRATIVOS SERÁN ALMACENADOS EN TEXTO SENCILLO. Si es posible, debe encontrar alguna forma de poner esto en segundo plano como LaunchDaemon.

NReilingh
fuente
Una forma de "Runas" para tu mac :) Gracias
Vlueboy
2

EN OSX, suponga que el programa que tiene está ubicado en / usr / local / bin / YourProgramName ... Para resolver este problema, utilice el siguiente comando: Para cambiar el ID de usuario / ID de grupo para las jerarquías de archivos enraizadas en los archivos en lugar de solo los archivos mismos .

sudo chown -R $(whoami) /usr/local/bin/

... luego en Terminal invoque su programName, $ YourProgramName

abdimuna
fuente
Mi problema fue que los programas instalados se instalaron sin los permisos adecuados, por lo que ejecuté esto en los directorios de esos programas y ahora funcionan bien sin sudo. ¡Gracias!
atwixtor
0

Tu puedes hacer

sudo tcsh

lo que te pondrá en una cáscara de raíz.

DTest
fuente
0

parece que el programa mismo verifica si se está ejecutando con ID = 0

chorro
fuente
1
... que por supuesto lo será si se trata de un superusuario de UID establecido (dejando de lado las preocupaciones expresadas anteriormente). Lo que probablemente estás tratando de decir es que el programa es la comprobación de verdadero UID 0 en lugar de sólo efectiva UID 0.
JdeBP
-1

Usted podría sudo chown YOUR-USERNAME-HERE BINARY-NAME-HERE.

Aún así, estoy totalmente de acuerdo con el comentario de dmckee.

dag729
fuente
¿Cómo ayudaría esto?
Scott