为什么我们要将锁定的账户过期,以完全阻止访问?

man usermod中:

注意:如果您希望锁定账户(不仅仅是通过密码访问),您还应将EXPIRE_DATE设置为1。

  • 为什么我们要将已锁定的账户设置为过期,以完全阻止对该账户的访问?
  • 如果我不将已锁定的账户设置为过期会发生什么?
2个回答

usermod -L实际上只是锁定用户的密码,所以用户仍然可以使用其他方法登录,例如使用公钥身份验证的ssh会话。

但是,如果将EXPIRE_DATE设置为1,帐户将完全过期,用户无法以任何方式使用它。这是因为1等于在1970-01-01 00:00:01到期。


1usermod -L -e 300 username会怎样?这将完全使账户过期吗? - Sinoosh
1@Sinoosh 这在某种程度上是相同的。到期日期将被设置为“1970年10月28日”,这会使账户过期。 - Ravexina
谢谢,你能告诉我如何通过SSH登录到一个被锁定的账户吗? - Sinoosh
1@Ravexina如果你在回答中真正地称之为“SSH公钥身份验证”,那会更好,因为它是绕过密码的身份验证机制,而不仅仅是SSH本身;) - marcelm
1@marcelm 你说得没错。已经更新了答案... - Ravexina
嗯,这个命名真是有点糟糕... - jpmc26

因为SSH密钥不关心密码,所以你需要注销该账户。
过去的经验是将用户的shell更改为/bin/false;然而,这实际上并不起作用。

将用户的shell更改为/bin/false;然而,这实际上并不起作用【需要引证】。 - flaviut
3@user60561 有些 SSH 命令不使用shell,比如端口转发。 - Joshua