【发布时间】:2011-02-08 21:17:34
【问题描述】:
我想用密码保护程序的执行。如何要求用户输入密码而不回显?
【问题讨论】:
-
投票结束时不清楚,请指定您希望密码输入与其他输入有何不同。没有回声要求:stackoverflow.com/questions/3980668/…
我想用密码保护程序的执行。如何要求用户输入密码而不回显?
【问题讨论】:
stty_orig=$(stty -g) # save original terminal setting.
stty -echo # turn-off echoing.
IFS= read -r passwd # read the password
stty "$stty_orig" # restore terminal setting.
【讨论】:
此命令将从标准输入读入 var pwd(禁用回显):
IFS= read -s -p Password: pwd
取消设置 IFS 将允许密码中的前导和尾随空格(在某些环境中可能支持,因此最好在脚本输入用户凭据期间支持它)
要验证前导/尾随空格是否得到适当处理,您可以使用:
echo -n "$pwd" | hexdump -C
注意:不要使用真实密码,因为它会转储到控制台!
HT:Ron DuPlain 了解有关 IFS 取消设置的更多信息。
【讨论】:
如果您需要获取密码以作为程序的参数提供,那么独角兽建议关闭回声是很好的。
在脚本中检查 passwd 不起作用 - 如果用户可以执行 bash 脚本,他们也有权读取它并查看 passwd。
如果您只想允许拥有密码的人运行程序,那么安全的方法是创建一个拥有该程序的新用户帐户并拥有一个使用“sudo”以该用户身份运行程序的脚本 - 它将以安全的方式提示用户输入密码。
【讨论】: