在 OpenBSD 上强制更改密码

在 OpenBSD 上强制更改密码

在 OpenBSD 5.6 上,我需要为一些用户帐户设置默认密码。我希望用户在第一次使用 SSH 登录时必须更改默认密码。

在 CentOS 和 Debian 上,我可以使用 来执行此操作chage -d 0 $username

从 login.conf 手册看来,我应该能够在 OpenBSD 上完成同样的事情,例如:

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

以这种方式设置确实会提示进行相应的更改userinfo $username,但通过 SSH 以 $username 身份登录实际上并不会强制更改密码 - 它会很乐意打开 shell,而忽略了上面已将密码标记为非活动状态。

2000 年的一些帖子讨论了编写包装器登录 shell强制更改密码。话虽如此,考虑到usermod和中明显的框架chpass,这似乎是内置的,但没有像 Linux 等效项那样广泛记录。

BSD 专业人士可以解释一下这种传统方法吗?

答案1

根据login.conf (5),过期(又称“死”)密码的默认宽限期为 0。除非在 中设置该值/etc/login.conf,否则如果当前系统日期大于用户在 中输入的密码的第 6 个字段,则用户无法登录来更改密码/etc/master.passwd- 请参阅passwd (5)

为了解决这个问题,您需要指定一个日期,该日期以秒数表示,该日期位于您选择的宽限期内,例如 2 周,您也可以在 中配置/etc/login.conf。要手动选择昨天的密码过期时间,我们可以使用:

# date -d yesterday +%s
1463597700

/etc/master.passwd然后使用将该值插入字段 #6 vipw。相关行将如下所示:

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.

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

相关内容