/etc/shadow 中的 *LK* 和 /etc/passwd 中的 /usr/sbin/nologon 之间的区别

/etc/shadow 中的 *LK* 和 /etc/passwd 中的 /usr/sbin/nologon 之间的区别

*LK*set in/etc/shadow和 set /usr/sbin/nologonin 和有什么实际区别/etc/passwd

我们什么时候会选择其中之一而不是另一个?我们什么时候将它们结合起来?

答案1

设置不是有效密码哈希的值,例如将阻止*LK*的密码哈希字段/etc/shadow所有形式的密码验证,但如果用户配置了其他身份验证机制(如指纹或 SSH 密钥),他们仍然会工作

作为这种情况的一个特例,passwd -l <username>将为现有哈希添加一个感叹号前缀,因此很容易使用 撤消passwd -u <username>。其他无效值例如*LK*可用于指示用户帐户不打算用于身份验证,例如因为该帐户用于在没有特殊权限也不与任何特定人员关联的上下文中运行某些系统服务用户。

参考man 5 shadow

例如,如果密码字段包含某些不是 crypt(3) 有效结果的字符串!或*,用户将无法使用unix密码登录(但用户可以通过其他方式登录系统)。

同样,在现代发行版的选项(锁定密码)中man passwd包含此注释:-l

请注意,这不会禁用该帐户。用户仍然可以使用另一个身份验证令牌(例如 SSH 密钥)登录。要禁用该帐户,管理员应使用 usermod --expiredate 1 (这会将帐户的到期日期设置为 1970 年 1 月 2 日)。

(Aaron D. Marasco 建议禁止登录和所有形式的身份验证曾经是正确的,但语义在过去 10 年左右的时间内发生了变化,以便有一个统一的方法来禁用密码身份验证,但仍然允许该帐户用于其他形式的身份验证。这在过去曾让很多人犯过错误:有很多书籍和其他文档都包含过时的信息。)

将用户的 shell 设置为非交互式 shell,例如/bin/false/usr/sbin/nologin将禁用外壳访问,但如果用户帐户可用于使用密码身份验证的其他方式(例如用于 IMAP 电子邮件访问或 FTP 文件传输),那些仍然可以工作

简而言之:

  • 要阻止所有形式的身份验证登录或以其他方式在新旧系统上使用用户帐户,请使用usermod -e 1 <username>
  • 要禁用 shell 访问但允许其他服务,请将用户的 shell 设置为/usr/sbin/nologin/bin/false类似的非交互式设置。
  • 要禁用密码身份验证但允许其他身份验证方法起作用,请使用passwd -l <username>或其他方法将密码哈希设置为无效值。
  • 要向其他系统管理员表明该用户帐户已因极端偏见而被故意禁用,请应用上述所有内容:-)

答案2

第一个永远不会允许该用户登录也从不验证(这*LK*不是特殊的 AFAIK,它只是一个无效的密码哈希)。这意味着如果您想让系统拥有其他内容(例如受 保护的网页)的有效密码.htaccess,这是行不通的。

第二个允许有效的用户和密码组合,但不允许登录。这将允许诸如 SFTP 之类的东西上传个人网页等。

相关内容