Com sudo -Siu newuser < password.txt
, a entrada padrão para o comando sudo -Siu newuser
é obtida de password.txt
. A opção -S
faz com que sudo
leia a senha da entrada padrão e, portanto, de password.txt
. Mas a entrada padrão para o shell resultante permanece redirecionada.
Quando a entrada é redirecionada para um shell - esteja ou não em execução no modo interativo - e o final da entrada é atingido, o shell é encerrado. Isso é semelhante a executar um script e fazer com que ele atinja o final do arquivo ou pressionar Ctrl + D para fazer com que seu terminal indique o fim da entrada. / p>
Portanto, você está iniciando um shell cuja entrada é redirecionada de um arquivo, cujo conteúdo provavelmente já é lido principalmente. Chega ao fim e sai. Realmente, seu objetivo é que o shell comece com sudo
para receber entrada de seu terminal e não daquele arquivo.
Embora você provavelmente possa contornar isso com descritores de arquivos adicionais e mais informações indiretas, bem como outros métodos, sugiro que você simplesmente execute a autenticação como uma etapa separada primeiro, antes de executar o shell: / p>
sudo -Sv < password.txt
Feito isso, você pode simplesmente executar:
sudo -iu newuser
Se você executar o segundo comando logo após o primeiro, seu timestamp ainda será válido e você não precisará inserir senhas.
Observe que, quando você executa um comando como um usuário nomeado com sudo
com -u
, ele funciona da mesma forma que quando você executa um comando como root (que geralmente é feito sem -u
). A senha que ele pede é sua senha , não a do usuário alvo, e é por isso que o comando que apenas faz autenticação (com -v
) não menciona o outro usuário. É possível configurar sudo
para esperar a senha do usuário alvo, mas as pessoas raramente fazem isso na prática e você não mencionou isso, então eu suponho que não é isso que você (e a maioria dos outros leitores) está interessado em.
(É claro que as advertências habituais sobre os riscos de segurança associados à leitura da senha em um arquivo como este continuam a se aplicar, na mesma medida em que foram aplicadas anteriormente).