在OpenBSD上强制更改密码

在OpenBSD 5.6上,我需要使用默认密码configuration多个用户帐户。 我希望用户在第一次SSHlogin时被迫更改默认密码。

在CentOS和Debian上,我可以使用chage -d 0 $username来做到这一点。

从login.conf手册中可以看出,我应该可以在OpenBSD上完成同样的事情,例如:

  • usermod -f 1 $username或者
  • usermod -f "Jan 1 2015" $username

设置这种方式会提示userinfo $username的适当更改,但通过SSHlogin为$ username并不会实际执行密码更改 – 它会非常愉快地打开shell,忘记密码已被标记为不活动。

2000年的一些post通过编写一个包装loginshell来强制更改密码。 也就是说,考虑到在usermodchpass的明显脚手架,看起来这是内置的,但是没有像Linux等同的广泛文档那样logging。

BSD专业人员可以通过传统的方法来了解一些情况吗?

根据login.conf (5) ,过期(又名“死”)密码的默认宽限期为0.除非在/etc/login.conf设置了这个值,否则用户不能login更改密码系统date大于/etc/master.passwd用户密码input的第6个字段 – 请参阅passwd (5)

为了解决这个问题,你需要指定一个date格式的date,这个date是在你select的宽限期(例如2周)之内的时间,你也将在/etc/login.confconfiguration。 要手动select昨天的密码过期时间,我们可以使用:

 # date -d yesterday +%s 1463597700 

然后使用vipw将该值插入/etc/master.passwd的字段#6。 相关的行会看起来像这样:

 user:$2b$08$01234567890abcdef:1000:1000::1463597700:0:user:/home/user:/bin/ksh 

像你指定的那样运行usermod( usermod -f "May 17 2016" user )基本上会做同样的事情,但是在这两种情况下,/ /etc/login.conf也必须通过将以下内容添加到default:\或相关部分您的用户类别:

  :password-dead=2w:\ :password-warn=2w: 

第一行允许用户更改密码两周的宽限期; 第二行将发出用户密码计划过期的警告。 如果过期,您的用户将看到如下内容:

 WARNING: Your password has expired. You must change your password now and login again! Changing local password for user. Old password: New password: Retype new password: Connection to openbsd-server closed. 

您还可以configuration:passwordtime=7776000:/etc/login.conf中每90天强制更改一次密码。 请注意,如果您需要对用户的密码复杂度进行额外的检查,例如禁止重复使用密码,则应该从软件包或其他密码检查程序安装并configurationpasswordqc