有没有办法看到为su密码键入的字符

时间:2012-08-30 20:54:33

标签: linux bash su

我正在编写一个bash脚本,可能需要su来运行命令。像这样的东西 -

echo“安装XYZ系统” echo“请输入root密码 - ” su -c“java -cp ./Installer.jar com.company.FmMain; exit”

是否有办法使用su字符(星号或其他东西),以便用户在输入密码时有一些视觉反馈?

2 个答案:

答案 0 :(得分:1)

您必须先在su之外的密码中读取密码。有关使用read完成此操作的示例,请参阅问题How do I echo stars (*) when reading password with `read`?

然后,您必须使用expect将此密码传递给su提供的密码提示。有关做类似事情的示例,请参阅问题How do I use expect to connect via ssh to a system and change the password of the host system?

答案 1 :(得分:1)

我不建议在Linux中使用屏蔽密码,这违反了预期的正常行为,并且可能会使用户感到困惑,特别是如果他们是经验丰富的Linux用户。读取密码的标准方法是在接受密码之前关闭回显和禁用特殊字符(如转义序列等)的处理(这通常通过设置终端属性 - tcsetattr等来完成),这就是su的工作方式。 / p>

有一些标准的库函数,比如getpass,它可以帮到你: http://www.gnu.org/s/hello/manual/libc/getpass.html

尝试实现自己的方法可能会带来潜在的安全隐患。我强烈警告这个。