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