Alterna usuário em um script de shell sem digitar a senha

4

Estou executando um script de shell usando o terminal de userA . No meio deste shell script, mudo para userB user usando su , mas isso me pede a senha de userB e eu tenho que inserir manualmente a senha através do terminal. Estou perguntando se existe uma maneira para que eu possa inserir a senha automaticamente sem que eu fique ao lado da máquina para inserir manualmente a senha? Como há um loop neste script e eu não quero ficar permanecendo o tempo todo olhando para o terminal para digitar a senha de userB quando me perguntar. Ou se houver uma maneira de colocar a senha no meu script, de modo que o terminal não espere que eu a insira manualmente? Alguém poderia, por favor, informar como isso poderia ser feito?

    
por Tak 15.03.2015 / 10:19

3 respostas

6

sudo também permite NOPASSWD em entradas específicas na configuração do / etc / sudoers, se você conseguir chegar lá. Como:

userA ALL = (userB) NOPASSWD: ALL

Isso dará ao usuário um acesso total ao userB sem senha. Provavelmente só deve ser usado se for possível confiar no userA para bloquear sua tela sempre que sair…

Como alternativa, você pode conceder ao usuário um acesso a apenas determinados scripts. Por exemplo:

userA ALL = (userB) NOPASSWD: /home/userB/scripts-for-userA/

Isso permite que o userA execute qualquer comando no diretório / home / userB / scripts-for-userA / como userB. Ainda é apenas tão seguro quanto esses comandos são, no entanto.

    
por 15.03.2015 / 10:55
3

sudo irá armazenar em cache a senha. Mas você confia precisa perguntar se você está fazendo isso direito. Seria melhor alterar as permissões, para que você e o usuário B tenham acesso aos mesmos arquivos?

    
por 15.03.2015 / 10:30
1

Você poderia mover as coisas que deveriam acontecer como UserB em um script separado que é suid para UserB. Isso evitará a necessidade de abrir su para userB do userA se você não quiser esse privilégio geral.

    
por 15.03.2015 / 16:51