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?



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:


Entendido! Resposta curta e doce!
precisa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.