設定により、パスワードの定期的な変更をユーザーに強制できます。
たとえば、以下のような設定が可能です。
次回のログインの際に強制的にパスワードを変更させる (詳細は、「パスワードの強制的な変更」を参照)
パスワードの有効期間 (日数) を設定する (詳細は、「パスワードの有効期間の設定」を参照)
パスワード作成後の変更禁止期間を設定する (詳細は、「パスワードの変更禁止期間の設定」を参照)
パスワードの有効期間が終わる前に「パスワードが間もなく無効になる」という警告メッセージが (ログイン時に) 表示されるタイミングを設定する (詳細は、「警告期間の設定」を参照)
ログインとログインの間隔の最大値 (日数) を指定する。指定された日数を超えてログインが行われないと、パスワードがロックされる (詳細は、「ログインの間隔の最大値の指定」を参照)
パスワードの有効期限 (日付) を設定する。この日を過ぎると、該当ユーザはシステムにログインできなくなる (詳細は、「パスワード使用権の有効期限」を参照)
上記の警告期間や有効期間などに達したのがログインの行われた後であった場合、影響は現れません。そのまま普通に動作し続けます。
影響が現れるのは、次回のログイン時か、ログインを必要とする機能 (以下に例を示す) を使用した時です。
login
rlogin
telnet
ftp
パスワードの使用期間に関する設定は、ユーザーごとに行います。パスワードの使用期間に関する必要条件はユーザーによって違っている可能性があります (ユーザー一般にデフォルト設定を適用することもできます。詳細は、「/etc/defaults/passwd ファイル」を参照してください)。
次回ログイン時のパスワード変更をユーザーに強制するには、以下の 2 種類の方法があります。
使用期間に関する設定を引き続き有効にする場合
passwd -f username
使用期間に関する設定を解除する場合
passwd -x 0 username
パスワードの有効期間を設定するには、passwd コマンドの引数 max を使用します。有効期間は日数で指定します。有効期間が終了した後は、新しいパスワードをユーザーが、作成しなければなりません。有効期間終了後に同じパスワードでログインしようとしても、Your password has been expired for too long というメッセージが表示され、新しいパスワードを作成しない限りログインを完了できません。
引数 max は以下の形式で使用します。
passwd -x max username
引数の意味はそれぞれ以下のとおりです。
username は、ユーザのログイン ID
max は、以下のうちいずれかになります。
「0 より大きい値」は、パスワードの有効期間の日数
「0」は、次回ログイン時のパスワード変更を強制する。使用期間に関する設定は解除される
「-1」は、パスワードの使用期間に関する設定を解除します。つまり passwd -x -1 username と入力すると、使用期間に関して該当ユーザーに行われていた設定はすべて解除されます。
たとえば、schweik というユーザーに 45 日ごとのパスワード変更を強制するには、以下のように入力します。
station1% passwd -x 45 schweik
パスワード作成後の変更禁止期間を設定するには、引数 min を使用します。変更禁止期間が終了しないうちにパスワードを変更しようとすると、Sorry less than N days since the last change というメッセージが表示されます。
引数 min は以下の形式で使用します。
passwd -x max -n min username
引数の意味はそれぞれ以下のとおりです。
username は、ユーザーのログイン ID
max は、パスワードの有効期間 (前のセクションを参照)
min は、パスワード作成後の変更禁止期間
たとえば、ユーザー eponine のパスワードの、有効期間を 45 日間、変更禁止期間を 7 日間に設定する場合は、以下のように入力します。
station1% passwd -x 45 -n 7 eponine
min 引数には以下の規則があります。
min 引数は必ずしも使用しなくて良い (つまり、パスワード変更禁止期間は必ずしも指定しなくて良い)
min 引数は、必ず -max 引数と組み合わせて使用する。つまり、変更禁止期間を設定するには、有効期間も設定する必要がある
min に max より大きい値を設定すると (例: passwd -x 7 -n 8)、ユーザーはパスワードを変更できなくなる。変更しようとすると、You may not change this password というメッセージが表示される。min に max より大きな値を設定すると、次の 2 つの効果が得られる。
ユーザーによるパスワードの変更を禁止する。つまり、管理特権を有する一部の人物以外は、パスワードを変更できなくなる。たとえば、複数のユーザーに共通のグループパスワードを割り当て、そのパスワードに対して min 値より大きな max 値を設定すると、グループ内のユーザーは誰一人としてパスワードを変更できなくなる。
パスワードは max 値で設定される期限内のみ有効となる。しかも、min 値が max 値より大きいため、ユーザーはパスワードを変更できない。つまり、max 値の示す有効期限が満了する前にパスワードの期限延長を図る手だては、ユーザーには一切与えられない。実際、有効期限が満了した後は、管理者の介在なしにユーザーはログインできなくなる。
パスワードの有効期限以前の一定期間、ログイン時に Your password will expire in N days (N は日数) というメッセージが表示されるようにするには、引数 warn を使用します。
たとえば、パスワードの有効期限が 30 日間 (引数 -max で指定する) で、warn が 7 に設定されている場合、パスワード作成後 24 日目のログイン時に Your password will expire in 7 days という警告メッセージが表示されます。また翌日 (パスワード作成後 25 日目) には、警告メッセージは Your password will expire in 6 days となります。
警告メッセージは、電子メールで送信されるものでも、ユーザーのコンソールウィンドウに表示されるものでもないという点に注意してください。表示されるのは、ユーザーのログイン時のみです。つまり指定の期間ユーザーがログインしなければ警告メッセージは表示されません。
warn の値は、max の値との「関連によって機能する」ものであるという点に注意してください。つまり、「max によって設定される有効期限から逆算されるもの」ということです。warn の値が 14 であれば、Your password will expire in N days というメッセージの表示が開始されるのは、有効期限の 2 週間前です。
warn の値は max の値との関連によって機能するため、max の指定がない場合は意味がなくなります。
引数 warn は以下の形式で使用します。
passwd -x max -w warn username
引数の意味はそれぞれ以下のとおりです。
username は、ユーザーのログイン ID
max は、パスワードの有効期限 (日数) (「パスワードの有効期間の設定」を参照)
warn は、「有効期限の何日前から警告メッセージの表示を開始するか」を指定する
たとえば、nilovna というユーザーの、パスワードの有効期間を 45 日間とし、警告メッセージの表示を有効期限の 5 日前から開始する場合、以下のように入力します。
station1% passwd -x 45 -w 5 nilovna
warn 引数には以下の規則があります。
warn 引数は必ずしも使用しなくて良い。warn の値を設定しなければ、警告メッセージは表示されない
warn 引数は、必ず max 引数と組み合わせて使用する。つまり、警告メッセージの表示期間を指定するには、有効期間の指定が必要になる
Solstice AdminSuite を使用して、warm 値をユーザーのパスワード用に設定することもできます。
ユーザーのパスワードの有効期間を解除するには、以下の 2 つの方法があります。
有効期間を取り消す。パスワードはそのまま使用できる
passwd -x -1 username
次回ログイン時にパスワードを強制的に変更させた後、有効期間を取り消す
passwd -x 0 username
上記の方法では、max の値を 0 か -1 に設定する (詳細は、「パスワードの有効期間の設定」を参照)
たとえば、ユーザー mendez のパスワードを次回ログイン時に強制的に変更させ、その後パスワードの有効期間を解除するには、以下のように入力します。
station% passwd -x 0 mendez
Solstice AdminSuite を使用して、このパラメータをユーザーのパスワード用に設定できます。
この値を設定するには、nistbladm コマンドを使用できます。たとえば、ユーザー otsu のパスワードの有効期間を取り消し、変更の必要がないようにするには、以下のように入力します。
station1% nistbladm -m `shadow=0:0:-1:0:0:0:0' [name=otsu],passwd.org_dir
nistbladm コマンドの使用方法の詳細は、「nistbladm コマンド」」を参照してください。
引数 expire には「ユーザーのパスワード使用権がいつ無効になるか」を日付で指定します。該当ユーザーのログインをこの日以降禁止し、システムから締め出します。
たとえば、ユーザー pete の有効期限を 1997 年 12 月 31 日に設定すると、どんなパスワードを使用しても 1998 年 1 月 1 日以降 pete という ID ではログインができなくなります。ログインをしようとしても、「Login incorrect」というメッセージが表示されます。
パスワード使用権の有効期限は、パスワードの有効期間とは異なっています。
「パスワードの有効期間」
厳密に区別をする必要のない場合には、有効期間が終了した後も変更されないパスワードのことを「有効期限の過ぎたパスワード」と呼ぶことがあります。しかしこのパスワードは、もう一度だけログインに使用できます。ただしその際に変更を強制されます。
「パスワード使用権の有効期限」
パスワード使用権が「有効期限」を過ぎたユーザーは、どんなパスワードを使用してもログインできません。ネットワークへのログインアクセス権が無効になったということです。
パスワード使用権が無効になっても、その影響が現れるのは、該当ユーザーがログインをしようとするときだけです。該当ユーザーがすでにログインしていた場合には、パスワード使用権が無効になったことによる影響は現れません。ただし、rlogin、telnet などログインを必要とする機能は使用できなくなり、いったんログアウトするとログインできなくなります。以上のことから、パスワード使用権に有効期限を設ける場合、毎日のワークセッション終了時には必ずログアウトするようユーザー全員に指示してください。
Solstice AdminSuite ツールを使用して有効期限の設定ができるときは、nistbladm を使用しないでください。Solstice AdminSuite ツールの方が使いやすく、設定を誤る可能性が低くなります。
nistbladm コマンドでパスワード使用権の有効期限を指定するには、以下のように入力します。
nistbladm -m `shadow=n:n:n:n:n:n6:n' [name=login],passwd.org_dir
引数の意味はそれぞれ以下のようになります。
login は、ユーザーのログイン ID
n は、 シャドウ列の (n6 を除くフィールドの) 値を設定する
n6 は、ユーザーのパスワード使用権の有効期限 (日付) を設定する。「1970 年 1 月 1 日から数えて何日目か」で表す (表 10-2 を参照)。このフィールドに指定する値には、以下の 2 種類がある
「-1」は、有効期限の設定を解除します。ユーザーのパスワードがすでに有効期限を過ぎていても、-1 を設定することによって再び使用できるようになります。有効期限を設定したくないときは、初めから -1 を指定しておきます。
「0 より大きい値」は、有効期限の日付 (「1970 年 1 月 1 日から数えて何日目か」) です。現在以前の日付を指定すると、ユーザーのパスワードはすぐに無効になります。
たとえば、ユーザー pete の有効期限を 1995 年 12 月 31 日に設定する場合は、以下のように入力します。
station1% nistbladm -m `shadow =n:n:n:n:n:9493:n' [name=pete],passwd.org_dir
空白のフィールドや、値の正しくないフィールドがあると機能しません。
有効期限を過ぎたパスワード使用権を再び使用できる状態にするには、nistbladm コマンドを使用して該当フィールド (n6) に -1 を指定します。例を以下に示します。
station1% nistbladm -m `shadow= n:n:n:n:n:-1:n' [name=huck],passwd.org_dir
また、nistbladm で 「n6」フィールドを将来の日付に設定しなおすという方法も使用できます。
引数 inactive には、「ログインからログインまでの間隔を最大何日あけることができるか」を指定します。この引数に指定された日数を超えてログインが行われなかった場合、該当ユーザーはマシンにログインできなくなります。ログインしようとすると、Login incorrect というメッセージが表示されます。
この設定はネットワーク全体ではなく、個々のマシンに対して行われます。したがって、NIS+ 環境においてログイン間隔の最大値を設定するには、該当ユーザーのエントリをホームドメインの passwd テーブルに指定します。この設定はネットワーク上のすべてのマシンで該当ユーザーに対して適用されます。しかし、最後にログインをした日付はマシンごとに異なるため、個別に (各マシンの /var/adm/utmp ファイルに) 記録されます。
たとえば、ユーザー sam の最大ログイン間隔を 10 日間に設定した場合を考えてみましょう。sam は 1 月 1 日にマシン A とマシン B にログインをした後、ログアウトしました。続いて 3 日後の 1 月 4 日、sam はマシン B にログインした後ログアウトしました。さらに 9 日後の 1 月13日になると、sam はマシン B にはログインできますがマシン A にはログインできません。マシン B においては最終ログインから 9 日間しか経過していませんが、マシン A においては 13 日間が経過しているからです。
最大ログイン間隔の設定は、まだ一度もログインをしていないマシンには適用されないという点に注意してください。一度もログインをしていないマシンには、引数 inactive の設定および他のマシンへのログイン実績がどのようになっていようとログインが可能です。
「毎日の作業終了時には必ずログアウトをせよ」という指示がユーザーに対して行われていない場合、最大ログイン間隔の設定はしないでください。この設定はログインにだけ関係しており、他の形でシステムを使用する場合のことは考慮されていません。仮にユーザーが作業終了後もログインしたままの状態でシステムを放置しておくと、ログインが発生しないため指定のログイン間隔をすぐ超えてしまいます。指定のログイン間隔を超えた状態でリブートやログアウトをすると、再びログインできなくなります。
Solstice AdminSuite ツールを使用して最大ログイン間隔の設定ができるときは、nistbladm を使用しないでください。Solstice AdminSuite ツールの方が使いやすく、設定を誤る可能性が低くなります。
最大ログイン間隔の設定を nistbladm コマンドで行う場合は、以下の形式を使用します。
nistbladm -m `shadow=n:n:n:n:n5:n:n' [name=login],passwd.org_dir
引数の意味はそれぞれ以下のとおりです。
login は、ユーザーのログイン ID です。
n は、シャドウ列の (n5 以外の) フィールドの値です。
n5 は、最大ログイン間隔 (日数) です。指定される値には、以下の 2 種類があります。
「-1」は、デフォルト設定です。最大ログイン間隔の設定を解除します。この設定の場合、ログインされない期間が何日続いてもパスワード使用権が失われることはありません。
「0 より大きい値」は、最大ログイン間隔 (日数) を指定します。
たとえば、ユーザー sam の最大ログイン間隔を 7 日間に指定する場合は、以下のように入力します。
station1% nistbladm -m `shadow= n:n:n:n:n:7:n:n' [name=sam],passwd.org_dir
最大ログイン間隔の設定を解除する (ログインできなくなったユーザーを再びログインできるようにする) には、nistbladm で inactive を -1 に指定します。