有没有办法来防止密码过期时,用户没有密码?

好吧,我们都关心安全性,所以用户应该定期更换密码(谁说密码就像内衣?)。

redhatcentos(5.x和6.x)上,可能会在45天后使每个真实的用户密码过期,并在7天之前发出警告。

/ etc / shadow条目然后看起来像:

testuser:$6$m8VQ7BWU$b3UBovxC5b9p2UxLxyT0QKKgG1RoOHoap2CV7HviDJ03AUvcFTqB.yiV4Dn7Rj6LgCBsJ1.obQpaLVCx5.Sx90:15588:1:45:7:::

它工作得很好,大多数用户经常更改他们的密码。

有些用户觉得不使用任何密码方便,但SSH公钥(我想鼓励他们)。

然后,45天后,他们忘记密码,并要求更改密码。

有没有办法来防止密码过期,当且仅当密码被禁用?

在/ etc / shadow中设置testuser:!!:15588:1:45:7:::不起作用:要求testuser在45天后更改密码。

当然,将密码过期设置为99999天工作,但是:

  • 这需要额外的工作。
  • 安全审计员可能并不高兴。

是否有一个系统范围的参数,只会提示用户更改过期的密码,如果他真的有一个?

如果用户不记得他们的密码,那当然是因为他们不必使用它们。 我build议使用一个集中的身份validation系统,如LDAP,以便每个用户只有一个密码,让他访问的一切

这解决了一个问题:

  • 您不必担心在每台主机上pipe理个人密码
  • 用户会实际记住他们的密码,因为他们需要他们
  • 您可以在一个中心位置(LDAP目录)pipe理密码策略,并在需要的时候让用户在那里更改密码(想想电子邮件警告他们几天前到期等等)
  • 你有集中的用户pipe理,当一个新帐户需要创build,或者一个旧帐户需要禁用时(谁没有听说过“在所有系统上尽快禁用该用户的帐户”),节省每个人的时间?

所以你可以通过查询信息

 chage -l username 

您可以使用以下命令覆盖系统默认值

 chage -I -1 -m 0 -M 99999 -E -1 username 

我不认为有什么可以设置的说..用户没有密码,所以忽略它。

根据SU的这个答案 ,即使用户的密码已经过期,用户也应该能够用他们的私钥login。

我认为“关键”是用户确实有密码过期。 私钥是他们login的另一种方式。 我相信,除非您禁用基于密码的login(在sshd_config中设置为PasswordAuthentication ),否则用户仍然可以使用其密码login。

sshd_config中有另一个名为PermitEmptyPasswords设置,默认为“no”。 如果你删除用户的密码,唯一的方法就是使用他们的私钥。 由于那时没有密码,所以也许不会过期。

这只是基于ssh。 还有其他地方可以看,如控制台和苏。 我不知道他们如何处理空密码。

作为最后的手段,你总是可以在cron上放置一个bash脚本来检查哪些用户有密钥,并相应地设置其到期date。 我也会做相反的事情:如果用户没有密钥,确保他们的到期date不是太遥远。

就我个人而言,我会让每个人使用公共/私人密钥对。

你使用传统的unix passwd / shadow文件吗? 如果是这样,你是否尝试禁用sshdconfiguration中的UsePAM

我testing了在OpenSSH 5.8_p1上禁用UsePAM ,并且通过PasswordAuthentication的用户如果他们的账户已经过期被正确拒绝,并且被正确地要求改变他们的密码; 并且在使用密钥login时没有任何问题(并且启用了UsePAM时,我可以确认使用密钥时,系统仍然要求更改密码)。