我想用密码确保程序的执行。
我如何在bash中这样做?
答案 0 :(得分:75)
此命令将从stdin读取var pwd (禁用echo):
IFS= read -s -p Password: pwd
取消设置IFS将允许密码中的前导和尾随空格(某些环境可能支持这种空格,因此最好在脚本输入用户凭据时支持它)
要正确处理前导/尾随空白,您可以使用:
echo -n "$pwd" | hexdump -C
注意:在转储到控制台时不要使用真实密码!
HT:Ron DuPlain关于IFS取消设置的其他信息。
答案 1 :(得分:52)
stty_orig=`stty -g` # save original terminal setting.
stty -echo # turn-off echoing.
read passwd # read the password
stty $stty_orig # restore terminal setting.
答案 2 :(得分:4)
如果你需要抓住一个passwd作为程序的参数,那么只需关闭回声就可以获得unicorns建议。 在脚本中进行passwd检查不起作用 - 如果用户可以执行bash脚本,他们也有权读取它并查看passwd。
如果您只想允许使用passwd的人运行程序,那么安全的方法是创建一个拥有该程序的新用户帐户,并使用一个脚本使用“sudo”来运行该程序作为该用户 - 它将以安全的方式提示用户密码。