以这种方式存储我的密码安全吗?
echo 'Write sudo password (will not be displayed) and hit enter'
read -s password
我需要它来制作这样的命令:
echo $password | sudo -S apt-get install -y foo bar
答案 0 :(得分:12)
不,因为您可以通过/proc/$PID/cmdline
看到它。
我建议不要尝试重新发明安全工具。 sudo
程序可以缓存您的密码。
答案 1 :(得分:11)
更好的方法是编辑你的sudoers文件并添加不需要密码的程序......
执行sudo visudo
并添加以下内容以使您的管理员组能够运行apt-get w / o密码:
%admin ALL = NOPASSWD: /usr/bin/apt-get
有关更多详细信息,请参阅sudoers手册页。
答案 2 :(得分:5)
echo $password | sudo -S apt-get install -y foo bar
这有点危险。如果用户已经对sudo进行了身份验证,sudo将不会再次请求密码并将其转发到apt-get,这可能会导致奇怪的结果(例如,如果安装后脚本提出问题)。我建议使用
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
时很短时间内可以看到密码是正确的。请将我的答案视为延伸评论,而不是您问题的答案。
答案 3 :(得分:-1)
sudo
是open source,因此您可以编译自己的版本,该版本将密码作为命令行参数。