Normalmente, programas como su
exigem que senhas sejam inseridas no terminal e não podem ser ignoradas. O usuário root
não precisa inserir uma senha para alternar para outra, por isso é comum ver soluções como sudo su user
.
No entanto, podemos ser capazes de trapacear. Se você tem o comando expect
em seu sistema, então podemos falsificar digitando a senha
#!/usr/bin/expect -f
set user [lindex $argv 0]
set password [lindex $argv 1]
spawn /bin/su $user
expect "Password:"
send "$password\r";
interact
Com este programa você pode fazer
./autosu username password
por exemplo
% autosu root imnottellingyou
spawn su root
Password:
[root@server /]#
Normalmente, não é uma boa idéia fazer exatamente isso, pois a senha aparecerá no histórico do shell quando você digitá-lo na linha de comando. Mas se você tiver a senha dentro de um script ou arquivo de dados, isso não importa muito! Você deve poder modificar este exemplo simples para atender às suas necessidades.
Se você não tiver o expect
instalado, ficará mais difícil; pergunte ao seu administrador para instalá-lo, ou compilá-lo a partir do código-fonte e executá-lo em seu diretório!