Eu tenho um script bash
que precisa ser executado com privilégios de root , mas deve ser invocado pelo usuário normal.
A parte difícil é que o script não deve pedir senha, e não quero usar o arquivo sudoers. Gostaria de evitar o uso de Sudo ou s = .
Isso é possível?
Se não fosse um script bash, mas um aplicativo normal, você daria a propriedade dele para o root e definiria o bit setuid no aplicativo. Então, na execução, o usuário efetivo sob o qual o aplicativo está sendo executado é o root. Devido a questões de segurança, no entanto, isso é proibido em muitos sistemas para scripts Shell. Esta questão aqui em unix.stackexchange.com trata de maneiras de superar isso.
Use Sudo. Se você não quiser ter que ligar para Sudo /path/to/myscript
, escreva um wrapper de uma linha exec Sudo /path/to/myscript "[email protected]"
. Veja Permitir setuid em scripts Shell , particularmente a resposta de Maciej Piechotka sobre o uso de Sudo e minha discussão mais geral sobre programas setuid .