Tengo un cierto programa binario en OS X que solo se puede ejecutar como root.
Estoy cansado de anteponer sudo
cada 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+s
establecer 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.
nosuid
opción de montaje ... además de por qué debe ejecutar regularmente un programa como superusuario.Respuestas:
¿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
file
comando en el programa.fuente
Media solución a su problema:
en el archivo sudoers, agregue lo siguiente:
Luego, desde la línea de comando, puede escribir:
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.
fuente
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 script
comando, y en lugar de usar sudo, escribirá sus credenciales en el AppleScript: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.
fuente
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
fuente
Tu puedes hacer
lo que te pondrá en una cáscara de raíz.
fuente
parece que el programa mismo verifica si se está ejecutando con ID = 0
fuente
Usted podría
sudo chown YOUR-USERNAME-HERE BINARY-NAME-HERE
.Aún así, estoy totalmente de acuerdo con el comentario de dmckee.
fuente