Como executar um programa com privilégios de root sem usar su ou sudo

8

Eu tenho um bashscript que precisa ser executado com privilégios de root , mas deve ser chamado pelo usuário normal.

Parte difícil é que o script não deve solicitar uma senha e não quero usar o arquivo sudoers . Eu gostaria de evitar o uso de sudo ou su .

Isso é possível?

Stefan
fonte
possível duplicata de Permitir setuid em scripts shell
Stefan

Respostas:

9

Se não fosse um script bash, mas um aplicativo regular, você daria a propriedade dele para fazer root e definir o bit setuid no aplicativo. Depois da execução, o usuário efetivo sob o qual o aplicativo está executando é root. Devido a questões de segurança, no entanto, isso é proibido em muitos sistemas para scripts de shell. Esta pergunta aqui no unix.stackexchange.com trata de maneiras de superar isso.

fschmitt
fonte
Bom, eu estava apenas postando um link para isso. A resposta de Hemant é uma boa solução
Michael Mrozek
Ruby contaria como um script de shell?
Stefan
1
@ Stefan Sim, tudo o que é executado através de um intérprete faz, porque não é o próprio script que é executado, é o interpretador de rubi, que não é setuid. Você precisa de um binário real para usar setuid
Michael Mrozek
2
Eu gostaria de poder votar isso, mas infelizmente não tenho 25 pontos de reputação. Permitir que usuários normais executem um script bash como root é uma idéia MUITO MAU, a menos que você saiba exatamente o que está fazendo (e se precisar perguntar como fazê-lo, não sabe). Se o OP publicou seu script aqui, provavelmente encontraria pelo menos três maneiras de explorá-lo. Há uma razão pela qual quase todas as distribuições tornam isso difícil.
Kim
Um dos principais princípios do Unix é: "Dê ao usuário a oportunidade de dar um
tapa
1

Use sudo. Se você não quiser ligar sudo /path/to/myscript, escreva um invólucro de uma linha exec sudo /path/to/myscript "$@". Consulte Permitir setuid em scripts de shell , particularmente a resposta de Maciej Piechotka sobre o uso do sudo e minha discussão mais geral sobre programas setuid .

Gilles 'SO- parar de ser mau'
fonte
A idéia toda é não precisar usar sudo.
Alexej Magura
@AlexejMagura Sudo é a solução mais fácil. É difícil fazer isso sem o sudo (a menos que você esteja disposto a se contentar com uma solução insegura; nesse caso, é melhor fornecer a senha de root a todos).
Gilles 'SO- stop be evil'