Como iniciar uma festa interativa com o su

0

Eu não tenho sudo su sobre um nome de usuário, no entanto, tenho sua senha. Eu quero ter um script que passe a senha e me dê uma festança interativa.

Eu tentei isso:

echo mypassword | su - otherusr
Password: Last login: Wed Jul 25 12:09:38 COT 2018
[myuser@myserver ~]$ 

Ele me retorna ao myuser e eu não tenho uma festança interativa com o outro usuário.

Eu também tentei:

echo mypassword | su -c "/bin/bash" - otherusr
echo mypassword | su -s "/bin/bash" - otherusr
echo mypassword | su -c "/bin/bash -i" - otherusr
Password: bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
bash-4.2$ exit

Como posso fazer isso? Eu quero criar um script que me retorne uma sessão bash interativa com outro usuário; não apenas executar um comando com outro usuário.

    
por AngocA 25.07.2018 / 19:15

1 resposta

0

Por padrão, nem sudo nem su lê uma senha de stdin. Eles tentam usar um dispositivo terminal diretamente (algumas implementações podem até mesmo reclamar quando usadas em um tubo). Existe a opção sudo -S para alterar este comportamento, mas, até onde eu sei, não existe uma opção semelhante para su .

Solução: use expect .

expect is a program that "talks" to other interactive programs according to a script. Following the script, expect knows what can be expected from a program and what the correct response should be.

[…]

In general, expect is useful for running any program which requires interaction between the program and the user. All that is necessary is that the interaction can be characterized programmatically.

No seu caso, o script pode ser:

#!/usr/bin/expect 

log_user 0
spawn /bin/su - otherusr
expect "Password: "
send "mypassword\n"
interact

Eu aconselho fazer este script acessível somente para você ( chmod go-rwx ). Outros usuários não devem ter permissão para lê-lo porque contém mypassword em texto simples; eles não devem ter permissão para executá-lo, porque ele dá acesso ao shell de otherusr .

    
por 25.07.2018 / 19:55