Kai*_*lar 40 command-line password terminal passwd
下面是我在 Linux 中的 bash 上创建用户的过程的图像。
我知道出于安全目的不应显示密码,但我的意思是,为什么不出现星号(或我输入的字符)?
Gil*_*il' 85
隐藏用户输入的最简单方法是什么?
不显示!
在输入密码时隐藏密码是一种古老的传统。在大多数情况下,从安全角度来看,In 是有意义的:如果有人从你的肩膀上看,你不想让你很容易看到你正在输入的内容。(一些现代安全指南,例如1 2 3 4 5确实建议有一个选项使密码可见,因为这允许用户能够选择更复杂的密码,并有信心他们不会花时间修复看不见的错别字。最大的风险不是肩膀冲浪,而是蛮力猜测,可能是离线。)
决定应该隐藏密码后,实施者必须决定如何去做。终端具有显示用户输入的模式(回显打开)和不显示用户输入的模式(回显关闭)。回声关闭模式在某种程度上具有内在的存在:在这种模式下,终端不执行回显用户输入的额外工作。对于键入键不会插入该字符而是调用绑定到该键的某些应用程序快捷方式的应用程序,也必须存在此模式。所以命令就像passwd
在他们读取密码时将终端设置为回显模式一样。
为每个字符打印星号需要额外的实现工作,但收益相对较小,passwd
命令的实现者并不喜欢这样做。没有用于打印星号的终端模式,因为它是一项非常专业的功能,仅在输入密码时有用。
顺便说一句,如果您想在更改密码时看到密码,您可以使用cat | passwd
(至少在某些系统上 - 有些版本passwd
需要一个选项cat | passwd --stdin
,有些则根本不接受)。(你甚至可以这样做{ echo 'current password'; echo 'new password'; echo 'new password'; } | passwd
,但不要那样做:它会将密码保存在 shell 历史记录中,从中泄露的风险要大得多。)使用从终端读取密码的命令而不是其他任何内容来安排它它们的标准输入,例如sudo
or ssh
,更复杂;如果您有可用的 GUI,则可以使用 ssh-askpass,它会显示您键入的字符数(SUDO_ASKPASS=/usr/bin/ssh-askpass sudo -A
对于 sudo;对于 ssh,当您从终端调用它时会很复杂)。
PM *_*ing 43
因为这就是我们在 *nix 土地上做事的方式。:)它通过不显示一堆星号来提供一点额外的安全性。这样,看到您屏幕的人就无法看到您的密码长度。
但我必须承认,当您输入密码时没有得到任何反馈,这有点可怕,尤其是当您的键盘不好时。因此,*nix 系统上的大多数 GUI 密码对话框确实会给您某种反馈,例如使用星号,或更常见的是?。有些甚至在您键入时显示每个字符,然后立即将其替换为 a*
或 ?,但如果有人可能从您的肩膀上看,那就不太好了。或者,如果他们有可以接收和解码从您的计算机发送到您的显示器的视频信号的设备。
归档时间: |
|
查看次数: |
18044 次 |
最近记录: |