Execute um comando como root

1

Estou tentando criar um script ruby executado com permissões de root quando executado por um usuário não privilegiado. Basicamente, estou escrevendo um script de wrapper que, quando executado, adiciona o usuário a um grupo, executa um comando e, em seguida, remove o usuário do grupo. Tudo isso está sob o CentOS e não está usando o sudo.

Eu brinquei com o script de propriedade do root e, em seguida, o chmod + s, que, como eu entendo, deve executar o script com permissões de root. No entanto, quando executo o comando ruby system "gpasswd -a #{user} #{group}" no meu script, recebo uma mensagem de permissão negada.

Estou um pouco preso agora, não como fazer isso funcionar.

Obrigado

    
por JamieD 12.05.2011 / 17:52

2 respostas

5

Definir scripts setuid não funciona a menos que o interpretador tenha uma versão setuid que invoca ao ver o script setuid. Você precisará de um wrapper setuid compilado para executar o script.

Além disso, observe que as alterações nos membros do grupo não são efetivadas até que o usuário seja relogado. Talvez você deva procurar configurar o modo de usuário ou o PolicyKit.

    
por 12.05.2011 / 17:59
4

O Sudo é a ferramenta certa para o trabalho e você deve pensar em instalá-lo.

    
por 12.05.2011 / 18:01

Tags