Eu tenho um determinado programa binário no OS X que só pode ser executado como root.
Estou cansado de acrescentar sudo
cada vez que a invoco e digito a senha e gostaria que ela fosse executada automaticamente como root quando a invocava regularmente, sem solicitar uma senha.
O proprietário do programa é root e seu grupo é wheel.
Tentei chmod ug+s
definir o userid e o groupid na execução como root / wheel, mas quando executo o programa sem o sudo, ele ainda reclama que só pode ser executado com o sudo ou como root.
nosuid
opção de montagem ... além do motivo pelo qual você deve executar regularmente um programa como superusuário.Respostas:
Você tem certeza de que o programa que você está tentando executar é realmente um script binário e não um shell. A maioria dos shells ignora scripts suid porque eles são muito, muito difíceis de fazer com segurança. Uma maneira fácil de verificar é usar o
file
comando no programa.fonte
Meia solução para o seu problema:
no arquivo sudoers, adicione o seguinte:
Em seguida, na linha de comando, você pode digitar:
e ele executará o comando sem solicitar sua senha. Este comando será executado como root.
Observe que você precisará substituir o nome de usuário pelo seu nome de usuário real.
fonte
Se você realmente não pode invocá-lo como um daemon por qualquer motivo (essa pergunta seria relevante nesse caso) , esse método pode ser hackeado juntos, mas é bastante sujo e nem seguro.
O conceito é iniciá-lo com um AppleScript. Você primeiro precisará saber como chamar o processo na linha de comando (que, se você já estiver usando o sudo, significa que você deve estar pronto). Você iniciará esse processo usando o
do shell script
comando e, em vez de usar o sudo, gravará suas credenciais no AppleScript:Reitero a parte sobre isso ser inseguro: ISSO SIGNIFICA QUE SEU ADMIN CREDS SERÁ ARMAZENADO EM TEXTO PLANO. Se possível, você deve encontrar uma maneira de colocar isso em segundo plano como um LaunchDaemon.
fonte
No OSX, suponha que o programa que você possui esteja localizado em / usr / local / bin / YourProgramName ... .
sudo chown -R $(whoami) /usr/local/bin/
... em seguida, no Terminal, chame seu programName, $ YourProgramName
fonte
Você pode fazer
o que o colocará em um shell raiz.
fonte
parece que o próprio programa verifica se está sendo executado com ID = 0
fonte
Você poderia
sudo chown YOUR-USERNAME-HERE BINARY-NAME-HERE
.Ainda assim, concordo totalmente com o comentário de dmckee.
fonte