以这种方式存储我的密码安全吗?
echo 'Write sudo password (will not be displayed) and hit enter'
read -s password
Run Code Online (Sandbox Code Playgroud)
我需要它来制作这样的命令:
echo $password | sudo -S apt-get install -y foo bar
Run Code Online (Sandbox Code Playgroud)
Dir*_*tel 12
不,因为你可以看到它/proc/$PID/cmdline
.
我建议不要尝试重新发明安全工具.该sudo
程序可以缓存您的密码.
fse*_*eto 11
更好的方法是编辑你的sudoers文件并添加你不需要密码的程序......
执行sudo visudo
并添加以下内容以使您的管理员组能够运行apt-get w/o密码:
%admin ALL = NOPASSWD: /usr/bin/apt-get
有关更多详细信息,请参阅sudoers手册页.
echo $password | sudo -S apt-get install -y foo bar
Run Code Online (Sandbox Code Playgroud)
这有点危险.如果用户已经对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
Run Code Online (Sandbox Code Playgroud)
代替.
编辑:Dirk在echo
执行时很短的时间内可以看到密码是正确的.请将我的答案视为延伸评论,而不是您问题的答案.