如何使“ sudo”从文件中获取密码?


13

我想运行需要sudo密码的命令,例如:

sudo apt-get update

这不行吗(我已经将密码存储在普通的文本文件中passwd.txt):

sudo apt-get update <~/passwd.txt

这是我为什么应该工作的逻辑:当需要密码时,要求用户从键盘输入密码。但是将重定向stdin以从passwd.txt文件中读取应该有效。

不是吗



您可以使用expecttcl脚本自动执行此类操作。
Adobe

如果您需要提出这个问题,则可能是您做错了什么。您能否一开始就分享您要完成的工作?人们永远都不必使用这种黑客手段。这表明应该有一个更好的解决方案。
gertvdijk

@gertvdijk我不是ubuntu的专家,但我正在学习。我将它作为练习提供给自己:“在Bash脚本中执行一条命令,该命令仅使用我当前拥有的知识就需要sudo特权。而无需使用Google。” 我想出了以上答案,我认为它应该可以工作。稍后,我在AskUbuntu上找到了更好,更安全的解决方案。
MichaelB 2013年

Answers:


27

sudostdin默认情况下不会读取密码。从sudo联机帮助页:

-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.

因此,您应该运行:

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

请记住,在文件中存储密码不是一个好习惯。您应该阅读:


明白了!简而言之,甜蜜的答案!
MichaelB
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.