Lyubomir Asked: 2023-06-06 04:44:49 +0800 CST2023-06-06 04:44:49 +0800 CST 2023-06-06 04:44:49 +0800 CST /etc/shadow 中的*LK* 与/etc/passwd 中的/usr/sbin/nologon 的区别 772 *LK*set in/etc/shadow和 setting /usr/sbin/nologonin之间的实际区别是什么/etc/passwd? 我们什么时候会选择一个而不是另一个?我们什么时候将它们结合起来? pam 2 个回答 Voted Best Answer telcoM 2023-06-06T06:57:28+08:002023-06-06T06:57:28+08:00 设置一个不是有效密码散列的值,例如*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将禁用shell 访问,但如果用户帐户可用于其他使用密码身份验证的方式(例如用于 IMAP 电子邮件访问或 FTP 文件传输),这些仍然可以工作。 所以简而言之: 要阻止所有形式的身份验证以登录或以其他方式在旧系统和新系统上使用用户帐户,请使用usermod -e 1 <username> 要禁用 shell 访问但允许其他服务,请将用户的 shell 设置为/usr/sbin/nologin,/bin/false或类似的非交互式。 要禁用密码身份验证但允许其他身份验证方法起作用,请使用passwd -l <username>或其他方法将密码哈希设置为无效值。 要向其他系统管理员表明该用户帐户已被故意禁用并带有极端偏见,请应用以上所有内容:-) Aaron D. Marasco 2023-06-06T06:10:44+08:002023-06-06T06:10:44+08:00 第一个永远不会允许该用户登录,也不会进行身份验证(这*LK*不是特殊的 AFAIK,它只是一个无效的密码哈希)。这意味着如果您想让系统为受保护的网页等其他内容设置有效密码.htaccess,那是行不通的。 第二个允许有效的用户和密码组合,但不允许登录。这将允许 SFTP 之类的东西上传个人网页等。
设置一个不是有效密码散列的值,例如
*LK*
密码散列字段/etc/shadow
将阻止所有形式的密码验证,但如果用户配置了其他验证机制(如指纹或 SSH 密钥),它们仍然有效。作为这种情况的特例,
passwd -l <username>
将在现有散列前加上一个感叹号,因此很容易撤消passwd -u <username>
。其他无效值,例如*LK*
可用于指示用户帐户永远不会用于身份验证,例如,因为该帐户用于在没有特殊权限或与任何特定人员相关联的上下文中运行某些系统服务用户。参考
man 5 shadow
:同样,在现代发行版中包括关于选项(锁定密码)的
man passwd
注释:-l
(Aaron D. Marasco 的建议,它不允许登录和所有形式的身份验证曾经是正确的,但语义在过去 10 年左右发生了变化,以便有一个统一的方法来禁用密码身份验证,但仍然允许帐户用于其他形式的身份验证。这在过去使很多人感到困惑:有很多书籍和其他文档都包含关于此的过时信息。)
将用户的 shell 设置为非交互式 shell,例如
/bin/false
或/usr/sbin/nologin
将禁用shell 访问,但如果用户帐户可用于其他使用密码身份验证的方式(例如用于 IMAP 电子邮件访问或 FTP 文件传输),这些仍然可以工作。所以简而言之:
usermod -e 1 <username>
/usr/sbin/nologin
,/bin/false
或类似的非交互式。passwd -l <username>
或其他方法将密码哈希设置为无效值。第一个永远不会允许该用户登录,也不会进行身份验证(这
*LK*
不是特殊的 AFAIK,它只是一个无效的密码哈希)。这意味着如果您想让系统为受保护的网页等其他内容设置有效密码.htaccess
,那是行不通的。第二个允许有效的用户和密码组合,但不允许登录。这将允许 SFTP 之类的东西上传个人网页等。