Como fazer 'sudo' pegar a senha de um arquivo?

12

Eu quero executar um comando que requer a senha sudo, diga:

sudo apt-get update

Isso não deveria funcionar (guardei a senha em um arquivo de texto normal passwd.txt):

sudo apt-get update <~/passwd.txt

Esta é a minha lógica do motivo pelo qual DEVE funcionar: quando a senha é necessária, o usuário é solicitado a inserir a senha no teclado. Mas redirecionar a stdinleitura do passwd.txtarquivo deve funcionar.

Não deveria?

MichaelB
fonte
Você normalmente usaria o expectscript tcl para automatizar essas coisas.
Adobe
Se você precisar perguntar isso, provavelmente está fazendo algo errado. Você poderia compartilhar o que está tentando realizar em primeiro lugar? Nunca se deve usar hacks como este. É uma indicação de que deve haver uma solução melhor.
gertvdijk
@gertvdijk Não sou especialista em ubuntu, mas estou aprendendo. Dei a mim mesmo como um exercício: "Execute um comando em um Bash Script que exija privilégio de sudo usando apenas o conhecimento que possuo atualmente. Sem usar o Google". Eu vim com a resposta acima e pensei que deveria funcionar. Encontrei soluções melhores e mais seguras no AskUbuntu posteriormente.
22713 Michael

Respostas:

26

sudonão lê a senha stdinpor padrão. Da página de sudomanual:

-S  The -S (stdin) option causes sudo to read the password from the standard input instead of the terminal device.
    The password must be followed by a newline character.

Então você deve executar:

sudo -S apt-get update <~/passwd.txt

Lembre-se de que armazenar senhas em arquivos não é uma boa prática. Você deve ler:

Eric Carvalho
fonte
Entendido! Resposta curta e doce!
precisa