![usermod -L 和 passwd -l 之间的区别](https://linux22.com/image/129073/usermod%20-L%20%E5%92%8C%20passwd%20-l%20%E4%B9%8B%E9%97%B4%E7%9A%84%E5%8C%BA%E5%88%AB.png)
从man passwd
-l, --lock
This option is used to lock the password of specified account
and it is available to root only. The locking is performed by rendering
the encrypted password into an invalid string (by
prefixing the encrypted string with an !). Note that the
account is not fully locked - the user can still log in by other means
of authentication such as the ssh public key authentication.
Use chage -E 0 user command instead for full account locking.
从man usermod
-L, --lock
Lock a user's password. This puts a '!' in front of the
encrypted password, effectively disabling the password.
You can't use this option with -p or -U.
这两个选项都将 a 放在!
影子文件中密码的开头。
usermod
如果其他类型的身份验证应该做同样的事情,为什么不警告不锁定呢?
在这两个选项之间锁定帐户时还有什么需要考虑的吗?
答案1
usermod
Debian 系统上的手册页和man7.org
我的 Debian 系统上的手册页确实包含具有相同效果的警告:
-L
,--lock
锁定用户的密码。 ...
注意:如果您希望锁定帐户(不仅仅是使用密码访问),您还应该将 EXPIRE_DATE 设置为 1。
如果在某些系统上没有这么说,那么我想这只是表明并非所有文档都是完美的。至少您引用的文本明确提到它锁定了“[the]用户的密码.”,所以仔细阅读仍然可以暗示它有一些限制。
我不思考还有很多其他事情需要考虑,这两个工具都做同样的事情,并使密码(并且只有密码)无法使用。任何不使用密码的东西(su
由特权用户使用;sudo
取决于配置;cron
SSH 密钥...)仍然会以密码锁定用户的身份愉快地完成工作。
正如手册页中所述passwd
,使帐户过期可以作为更广泛的块。我认为过期是由 PAM 会话模块检查的,即使身份验证不通过 PAM,该模块通常也会调用。
(“通常”,因为任何特权程序都可以只更改用户 ID,而不考虑帐户过期时间,如果它被编程为这样做的话。但至少cron
会sshd
启动 PAM 会话,从而检查过期时间。)
无论如何,如果您开始锁定用户帐户,测试锁定是否按预期工作(使用测试帐户)可能不是一个坏主意。只是因为这可能是您真的不想留下漏洞的情况之一。