据man passwd
现有资料如下:
-d, --delete
Delete a user's password (make it empty).
This is a quick way to disable a password for an account.
It will set the named account passwordless.
出于实验目的,创建了一个测试用户,然后sudo adduser testuser
执行了以下命令:
sudo passwd -d testuser
因此,su - testuser
无需按预期请求任何密码即可工作
只是好奇,如果这种方法存在,是因为至少存在一个实现这种方法的理由。所以
问题
- 为什么/何时使用
passwd -d
?
答案1
帐户可以通过三种方式实现“无密码”:
- 它可以在 /etc/passwd 或 /etc/shadow 中具有空白(零大小)哈希密码。这种情况下,如果没有其他禁止的话,输入登录名后不会出现密码提示。 (这就是
passwd -d
作用) - 它可能具有无效的散列密码(例如
*
或!
),在这种情况下,没有密码将起作用,并且将显示密码提示。对于无效的登录名,登录提示的行为类似。 (类似地passwd -l
,实际上会在前面加上一个!
使其无效而不删除哈希值。) - 哈希密码可以设置为空白密码的哈希值。在这种情况下,将给出密码提示,但只有在提示时按 Enter 键而不输入任何内容,才允许登录。 (从字面上看,零大小的空白密码是有效的。)
第二种情况(无有效密码)对于不打算登录的帐户来说很常见。
其他两种情况很少(但并非永远)有用,并且在某些情况下可能是危险的(如安全漏洞)。诸如 ssh 之类的网络访问程序可以选择明确禁止在此状态下登录帐户,但本地登录(如 with su
)仍然是可能的。
一种可能的(非不安全的)用途是用于具有nologin
外壳的帐户。