如何让bash脚本要求输入密码?

时间:2010-04-16 15:09:40

标签: bash passwords

我想用密码确保程序的执行。

我如何在bash中这样做?

3 个答案:

答案 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”来运行该程序作为该用户 - 它将以安全的方式提示用户密码。