在 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。。/etc/master.passwdpasswd (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從軟體包或其他密碼檢查程式進行安裝和設定。

相關內容