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 としてログインしても、実際にはパスワードの変更は強制されません。パスワードが上記で非アクティブとしてマークされていることに気づかず、シェルが問題なく開きます。
2000年の投稿のいくつかはラッパーログインシェルの作成パスワードの変更を強制します。とは言うものの、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:
最初の行では、ユーザーがパスワードを変更するための 2 週間の猶予期間が与えられます。2 行目では、ユーザーのパスワードの有効期限が近づいていることを警告します。有効期限が切れると、ユーザーには次のようなメッセージが表示されます。
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:
90 日ごとに追加のパスワード変更を強制するように設定することもできます/etc/login.conf
。パスワードの再利用を禁止するなど、ユーザーのパスワードの複雑さに関する追加のチェックが必要な場合は、passwordqc
パッケージまたは別のパスワード チェッカー プログラムをインストールして設定する必要があることに注意してください。