以这种方式存储我的密码安全吗?
echo 'Write sudo password (will not be displayed) and hit enter'
read -s password
我需要它来发出这样的命令:
echo $password | sudo -S apt-get install -y foo bar
不,因为您可以通过/proc/$PID/cmdline
.
我建议不要尝试重新发明安全工具。该sudo
程序可以缓存您的密码。
更好的方法是编辑您的 sudoers 文件并添加不需要密码的程序...
执行sudo visudo
以下操作并添加以下内容以使您的管理员组能够运行 apt-get w/o password:
%admin ALL = NOPASSWD: /usr/bin/apt-get
有关更多详细信息,请参见 sudoers 手册页。
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
。请将我的回答视为扩展评论,而不是对您的问题的回答。
sudo
是开源的,所以你可以编译你自己的版本,它把密码作为命令行参数。