Como posso passar a senha do root para um script?

6

Eu tenho a senha de root em um dos meus scripts e quero iniciar outro script que requer permissão de root desse script. Como posso usar a senha de root que tenho para que eu não precise perguntar ao usuário a senha de root que está executando o segundo script.

    
por Troggy 20.08.2009 / 09:46

2 respostas

17

Há muitas implicações de segurança nisso, mas vamos direto ao melhor modo de lidar com isso.

Não use a senha de root diretamente. Use sudo para executar os scripts. O Sudo é instalado por padrão no Ubuntu e está disponível em quase todas as distribuições populares do Linux nos repositórios de pacotes. Uma vez que o sudo estiver instalado, você vai querer editar o arquivo / etc / sudoers.

su -
visudo
# add something like the following:
Cmnd_Alias SCRIPT=/path/to/script1
script_user ALL=NOPASSWD: SCRIPT

Assim, script_user pode executar o primeiro script como raiz através do sudo, que então inicia o outro script como raiz. Para obter mais informações sobre o arquivo sudoers, consulte a página sudoers(5) man em seu sistema.

Mas seus scripts precisam ser executados como root? Na maioria das vezes isso não é necessário, mas é feito por conveniência.

    
por 20.08.2009 / 10:00
2

Outra opção seria definir suid no arquivo para root. Exemplo: chmod u+s script.sh as root, portanto, quando um usuário normal executa o script, ele é executado com as permissões de arquivo do proprietário aka root.

Apenas para seu próprio conhecimento, se você não quer configurar o sudo para rodar sem uma senha, você pode passar a senha para o sudo através do stndin como echo PASSWORD|sudo -S ./script.sh

No entanto, isso pode ser uma preocupação de segurança, pois mostrará a senha no histórico ou qualquer pessoa que esteja assistindo como "ps". Você também pode olhar em Expect e Empty.

    
por 09.07.2012 / 22:26

Tags