14

以这种方式存储我的密码安全吗?

echo 'Write sudo password (will not be displayed) and hit enter'
read -s password

我需要它来发出这样的命令:

echo $password | sudo -S apt-get install -y foo bar
4

4 回答 4

13

不,因为您可以通过/proc/$PID/cmdline.

我建议不要尝试重新发明安全工具。该sudo程序可以缓存您的密码。

于 2010-09-08T12:00:33.573 回答
11

更好的方法是编辑您的 sudoers 文件并添加不需要密码的程序...

执行sudo visudo以下操作并添加以下内容以使您的管理员组能够运行 apt-get w/o password: %admin ALL = NOPASSWD: /usr/bin/apt-get

有关更多详细信息,请参见 sudoers 手册页。

于 2010-09-08T12:06:35.333 回答
7
echo $password | sudo -S apt-get install -y foo bar 

这有点危险。如果用户已经通过 sudo 的身份验证,sudo 不会再次请求密码,而是将其转发到 apt-get,这可能会导致奇怪的结果(例如,如果 postinstall 脚本提出问题)。我建议使用

sudo -k                         # remove previous sudo timestamp
echo $password | sudo -v -S     # create a new one for 15 minutes
sudo apt-get ...                # execute the command

反而。

编辑:Dirk 关于密码在执行时很短的时间内可见是正确的echo。请将我的回答视为扩展评论,而不是对您的问题的回答。

于 2010-09-08T12:00:09.253 回答
-2

sudo开源的,所以你可以编译你自己的版本,它把密码作为命令行参数。

于 2010-09-08T12:17:08.127 回答