Use sudo no shell script

1

Eu tenho acesso à conta de outro usuário usando o comando:

sudo su - other_user

Eu não tenho a senha. Parece que este é o único comando que o sudo me permite.

Depois disso, sou capaz de executar várias tarefas, como cópia de arquivos e reinicialização do servidor. Eu gostaria de automatizar essas tarefas para que um script possa ser executado por mim, o qual obteria os direitos do outro usuário e faria o que ele tem a fazer. No entanto, sudo gera outro shell, que até eu sair bloqueia a execução do script. É possível controlar esse shell e enviar comandos para ele a partir do meu script?

Atualização de 2011-11-01:

Eu tentei sugestões das respostas e de ambos os comandos:

sudo -u other_user whoami
sudo su - other_user -c "whoami"

peça senha.

Infelizmente, não consegui encontrar sudoers para ver as configurações. A situação me irrita um pouco porque tenho privilégios para fazer o que eu quero, mas não posso automatizar isso.

    
por Infeligo 28.10.2011 / 13:27

2 respostas

2

Use a opção -c do comando su para executar comandos como outro usuário.
Se necessário, você também pode usar a saída desses comandos no seu script ou no seu shell.

Exemplo:

[infeligo@server ~] cat /home/kenny/secretfile.txt  
cat: /home/kenny/secretfile.txt: Permission denied  
[infeligo@server ~] sudo su - kenny -c "cat /home/kenny/secretfile.txt"  
Dear diary: Today was a boring day at work. Good thing it's a friday!  
[infeligo@server ~]
    
por 28.10.2011 / 14:43
1

O uso de su não é totalmente necessário.

$ sudo -u other_user whoami
other_user
    
por 28.10.2011 / 21:54

Tags