usermod -L 和 passwd -l 之间的区别

usermod -L 和 passwd -l 之间的区别

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

usermodDebian 系统上的手册页和man7.org我的 Debian 系统上的手册页确实包含具有相同效果的警告:

-L--lock
锁定用户的密码。 ...
注意:如果您希望锁定帐户(不仅仅是使用密码访问),您还应该将 EXPIRE_DATE 设置为 1。

如果在某些系统上没有这么说,那么我想这只是表明并非所有文档都是完美的。至少您引用的文本明确提到它锁定了“[the]用户的密码.”,所以仔细阅读仍然可以暗示它有一些限制。


我不思考还有很多其他事情需要考虑,这两个工具都做同样的事情,并使密码(并且只有密码)无法使用。任何不使用密码的东西(su由特权用户使用;sudo取决于配置;cronSSH 密钥...)仍然会以密码锁定用户的身份愉快地完成工作。

正如手册页中所述passwd,使帐户过期可以作为更广泛的块。我认为过期是由 PAM 会话模块检查的,即使身份验证不通过 PAM,该模块通常也会调用。

(“通常”,因为任何特权程序都可以只更改用户 ID,而不考虑帐户过期时间,如果它被编程为这样做的话。但至少cronsshd启动 PAM 会话,从而检查过期时间。)


无论如何,如果您开始锁定用户帐户,测试锁定是否按预期工作(使用测试帐户)可能不是一个坏主意。只是因为这可能是您真的不想留下漏洞的情况之一。

相关内容