为什么/何时使用 passwd -d?

为什么/何时使用 passwd -d?

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外壳的帐户。

相关内容