Como executar um programa como root sem "sudo"?

10

Eu tenho um determinado programa binário no OS X que só pode ser executado como root.

Estou cansado de acrescentar sudocada 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+sdefinir 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.

UrEl
fonte
Pode ser executado em um horário específico ou quando algum evento ocorre?
User151019 de
9
Os antigos gurus do unix sugeririam que invocar uma operação somente raiz manualmente manualmente significa que você está fazendo errado. Isso é algo que pode ser automatizado? Ou executar como um daemon? Mais detalhes podem trazer sugestões para soluções de um tipo diferente.
dmckee --- gatinho ex-moderador 31/05
O programa é realmente de propriedade do root? Setuid / gid usará usuário / grupo do arquivo.
Daniel Beck
2
… Onde "mais detalhes" também inclui coisas como se o binário deste programa está em um volume montado pelo NFS e se você usa a nosuidopção de montagem ... além do motivo pelo qual você deve executar regularmente um programa como superusuário.
JdeBP
@dmckee muitos usuários de mac executam software de servidor em sua estação de trabalho e geralmente são configurados para exigir raiz para coisas que realmente não precisam dele ... mas reconfigurar uma pilha LAMP para rodar sem raiz é um problema. Por outro lado, reiniciar o apache 20 vezes por dia e digitar sudo a cada vez também é um problema. Esta é uma solução simples.
Abhi Beckert

Respostas:

2

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 filecomando no programa.

KeithB
fonte
17

Meia solução para o seu problema:

no arquivo sudoers, adicione o seguinte:

username ALL= NOPASSWD: /path/to/command

Em seguida, na linha de comando, você pode digitar:

sudo command

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.

Walter
fonte
Surpreso ao encontrar a melhor resposta na parte inferior. Obrigado!
CDR
FYI, para resolver a outra metade (não ter que digitar sudo comando) Criar um shell alias que inclui sudo no comando (como Surm = sudo rm "$ @")
Walter
4

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 scriptcomando e, em vez de usar o sudo, gravará suas credenciais no AppleScript:

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

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.

NReilingh
fonte
Uma maneira de "Runas" para o seu Mac :) Thanks
Vlueboy
2

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

abdimuna
fonte
Meu problema era que os programas instalados eram instalados sem as devidas permissões, então eu executei isso nos diretórios desses programas e agora eles rodam bem sem o sudo. Obrigado!
Atwixtor
0

Você pode fazer

sudo tcsh

o que o colocará em um shell raiz.

DTest
fonte
0

parece que o próprio programa verifica se está sendo executado com ID = 0

jato
fonte
1
… O que, é claro, será se for um superusuário de UID definido (deixando de lado as preocupações expressas acima). O que você provavelmente está tentando dizer é que o programa está verificando verdadeira UID 0 ao invés de apenas eficaz UID 0.
JdeBP
-1

Você poderia sudo chown YOUR-USERNAME-HERE BINARY-NAME-HERE.

Ainda assim, concordo totalmente com o comentário de dmckee.

dag729
fonte
Como isso ajuda nada ⁠?
Scott