この節では、NIS+ 名前空間でパスワードを管理する方法について説明します。この節では、NIS+ セキュリティシステム全般、および特にログインパスワードがシステムで果たす役割について十分に理解していることを想定しています (詳細については、第 11 章「NIS+ のセキュリティの概要」を参照してください)。
現在の passwd コマンドでは、以前 nispasswd で行なっていた操作がすべて行えます。NIS+ の名前空間に特有な操作を行うには、passwd -r nisplus を使用します。
passwd コマンドの使用や、パスワードの使用期間に関する設定を正しく行うには、nsswitch.conf ファイル中の passwd エントリがすべてのマシンにおいて正しくなければなりません。passwd コマンドが「パスワード情報をどこに要求するか」および「パスワード情報をどこで更新するか」は、このエントリによって決定されます。
passwd エントリの設定として考えられるのは、以下の 5 種類だけです。
passwd: files
passwd: files nis
passwd: files nisplus
passwd: compat
passwd: compat passwd_compat: nisplus
使用しているネットワークのすべてのマシン上に存在する nsswitch.conf ファイルは、必ず上記の passwd 構成のうちの 1 つを使用していなければなりません。上記の 5 つ以外の設定をすると、ログインができなくなります。
現在の passwd コマンドでは、以前 nispasswd で行なっていた操作がすべて行えます。コマンド行で実行するときは、nispasswd ではなく passwd を使用します。
旧バージョンとの互換性を確保するため、nispasswd も完全な形で残っている点に注意してください。
現在の passwd コマンドでは、以前 yppasswd で行なっていた操作がすべて行えます。コマンド行で実行するときは、yppasswd ではなく passwd を使用します。
旧バージョンとの互換性を確保するため、yppasswd も完全な形で残っている点に注意してください。
passwd コマンドでは、パスワードに関する様々な操作が行えます。現在の passwd コマンドは、nispasswd コマンドの代わりとして使用できます。従来 nispasswd で行なっていた操作にも、passwd コマンドを使用するようにしてください。passwd コマンドのフラグ、オプション、引数の詳細は、マニュアルページを参照してください。
一般ユーザーが passwd コマンドで行える操作には以下のものがあります。
自らのパスワードの変更
自らのパスワード情報の表示
管理者が passwd コマンドで行える操作には以下のものがあります。
ほかのユーザーにログイン時のパスワード変更を強制する
ほかのユーザーのパスワードをロック (使用不可能に) する
「パスワード作成後、どのくらいの期間変更禁止にするか」を指定する
「パスワードが間もなく無効になる」という警告を出すタイミングを指定する
パスワードの有効期間を指定する
passwd などのコマンドがパスワード情報をどこから得て、どこに保存するのかということは、ネームサービススイッチで指定します。nsswitch.conf ファイルの passwd エントリの設定に使用する文字列はそれぞれ以下のことを意味します。
nisplus。パスワード情報の獲得、変更、保存は、該当するドメインの passwd テーブルおよび cred テーブルで行う
nis。パスワード情報の獲得、変更、保存は、passwd マップで行う
files。パスワード情報の獲得、変更、保存は、/etc/passwd ファイルおよび /etc/shadow ファイルで行う
passwd コマンドの -r nisplus、-r nis、-r files といった引数は、nsswitch.conf ファイルの設定よりも優先されます。 これらの引数をつけて passwd コマンドを実行すると、「nsswitch.conf ファイルより優先される」ということを知らせる警告メッセージが表示されます。警告メッセージ表示後も操作を続行すると、nsswitch.conf ファイルのシーケンスは無視され、-r によって指定された場所でパスワード情報の更新が行われます。
たとえば、nsswitch.conf ファイルにおいて passwd エントリが以下のように指定されている場合を考えてみましょう。
passwd: files nisplus |
この場合、passwd コマンドを -r を使用しないで実行すると、パスワード情報のソース (情報の獲得、変更、保存が行われる場所) は /etc/passwd ファイルになります。しかし -r nisplus オプションを使用して passwd コマンドを実行すると、パスワード情報のソースは /etc/passwd ファイルから NIS+ の passwd テーブルに変更されます。
-r オプションは、「検索シーケンスが誤っていて nsswitch.conf ファイルが使用できない」という場合にのみ使用するようにします。たとえば、2 カ所に格納されているパスワード情報を更新する必要がある場合、1 つめについては nsswitch.conf ファイルで指定されているソースを使用できますが、2 つめについては別のソースを使用する必要があります。
変更しようとすると、次のメッセージが表示されます。
Your specified repository is not defined in the nsswitch file! |
このメッセージは、「パスワード情報の更新は、-r オプションで指定された場所で行なわれるが、nsswitch.conf ファイルでその場所がソースとして使用されるまでは更新の影響がまったく現れない」ということを意味します。たとえば、nsswitch.conf ファイルにおいて passwd: files nis という指定が行われているときに、-r nisplus オプションでパスワード使用期間の設定を行なったとします (つまり設定は NIS+ の passwd テーブルにおいて行われることになる)。パスワード情報のソースが nsswitch.conf ファイルにおいて NIS+ passwd テーブル以外の場所に指定されているため、この設定による影響はまったく現れません。
この章で「NIS+ 環境とは」、「nsswitch.confファイルでパスワード情報のソースが nisplus に設定されている」、「passwd コマンドが -r nisplus という引数をつけて実行されている」という状況を指します。
passwd コマンドは NIS+ 環境 (前節参照) で実行された場合、ユーザーに資格があってもなくても機能するよう設計されています。ただし資格のないユーザーが passwd コマンドで行えるのは、自らのパスワードの変更だけです。ほかのパスワード操作は、資格のある (認証された)、必要なアクセス権を持った (承認された) ユーザーだけが行えます。
承認およびアクセス権については、ユーザーがすべて適切な資格を持っているという前提で説明をします。
通常の NIS+ 環境では、passwd テーブルの所有者はいつでも制約なしにパスワード情報の変更ができます (デフォルトの場合)。つまり passwd テーブルの所有者は、読み取り、作成、変更、削除に関して完全に承認されている (アクセス権を与えられている) ということになります。また所有者は以下のことも行えます。
テーブルのグループ、その他、未認証といったクラスに、読み取り権、作成権、変更権、削除権などを与える (この種の権利をその他クラス、未認証クラスに与えると NIS+ のセキュリティが弱くなる)
任意のクラスに与えられたアクセス権を、nisdefaults、nischmod、nistbladm などのコマンドを使用して変更する
与えられているアクセス権には関わりなく、その他クラス、未認証クラスのユーザーはすべてパスワードの使用期間の制約に従います。つまり、自分のパスワードであろうとほかのユーザーのパスワードであろうと、作成されてから一定の時間が経過するまでは変更ができないということです。また有効期間の過ぎたパスワードを変更しなければならないという点も、グループ、その他、未認証といったクラスのメンバーすべてに共通です。しかしパスワード使用期間に関する上記のような制約は、passwd テーブルの所有者には適用されません。
NIS+ 環境で passwd コマンドを使用する場合、行おうとする操作に関する承認 (アクセス権) が必要です。
表 16–1 passwd コマンドに関するアクセス権
操作の種類 |
必要な権利 |
アクセス対象となるオブジェクト |
---|---|---|
情報を表示する |
読み取り権 |
passwd テーブルのエントリ |
情報を更新する |
変更権 |
passwd テーブルのエントリ |
情報を追加する |
変更権 |
passwd テーブル |
NIS+ 環境で passwd コマンドを使用して主体のパスワードを変更しようとすると、主体の非公開鍵が cred テーブル中で更新されます。
cred テーブルの DES エントリに対してユーザーが変更権を持っていて、ログインパスワードと Secure RPC パスワードが同じであれば、passwd コマンドによって cred テーブルの非公開鍵が更新されます。
cred テーブルの DES エントリに対する変更権がユーザーになく、ログインパスワードと Secure RPC パスワードが異なっている場合は、passwd コマンドによってパスワードだけが変更され、非公開鍵は変更されません。
つまり cred テーブルの非公開鍵が、passwd テーブルに格納されているものとは異なったパスワードで作られることになります。この場合は、chkey コマンドを実行する、ログイン後に毎回 keylogin を実行するといった方法で、鍵を変更する必要があります。
ほかのドメインの passwd テーブルに対して操作をするには、passwd コマンドを以下のように使用します。
passwd [options] -D domainname |
nistbladm は、passwd テーブルをはじめとする NIS+ テーブルに関する情報を作成、変更、表示するのに使用するコマンドです。
nistbladm コマンドを使用してパスワード操作をするには、nistbladm を passwd テーブルのシャドウ列に適用する必要があります。nistbladm をシャドウ列に適用するのは複雑で微妙な作業になります。passwd コマンドまたは Solaris 管理コンソールツールでより簡単に行える操作には、nistbladm コマンドを使用するべきではありません。
つまり以下のような操作には、nistbladm ではなく passwd コマンドや Solaris 管理コンソール ツールを使用してください。
パスワードの変更
パスワードの使用期間の設定
パスワード作成後から変更が可能になるまでの時間の設定
「パスワードが間もなく無効になる」という警告が表示されるタイミングの設定
パスワードの使用期間に関する設定の解除
nistbladm コマンドには以下の機能があります。
新しい passwd テーブルエントリの作成
既存のエントリの削除
passwd テーブル中の UID フィールド、GID フィールドの更新
passwd テーブルの、アクセス権などセキュリティに関する属性の更新
ユーザーアカウントに関して「どれだけの期間使用できるか」、「どれだけの期間使用されなければ無効になるか」を設定する (「パスワード使用権の有効期限」、「ログインの間隔の最大値の指定」を参照)
nistbladm コマンドでは、シャドウ列の様々なフィールドの値を指定することによってパスワードパラメータの設定を行います。シャドウ列のフィールドの値は、以下のような形式で設定します。
引数の意味はそれぞれ以下のとおりです。
「n1 最終更新日」。パスワードが最後に変更された日付です。1970 年 1 月 1 日からの日数で表されます。このフィールドの値は、パスワードが変更されると自動的に更新されます (日数に関する重要な情報は、「nistbladm と日数」に示されています)。このフィールドが空白であったり、指定されている値が 0 の場合は、過去に一度もパスワードの変更が行われていないことを意味します。
このフィールドの値は、残りのフィールドの設定の基礎となることに注意してください。このフィールドの値が不当に変更されると、残りのフィールドの設定も不当なものになります。
「n2 最小値」。パスワードが変更されてから、次の変更が可能になるまでの期間です。たとえば、パスワード作成時の最終変更日フィールドの値が 9201 (1970 年 1 月 1 日から 9201 日経過したことを示す) で、最小値フィールドの値が 8 だとすると、9209 日目まではパスワードの変更ができません (詳細は、「パスワードの変更禁止期間の設定」を参照)。
この値としては以下の 3 とおりが考えられます。
「0」または空白の場合は、変更禁止期間がないことを意味します。
「0 より大きい数字」は、この数字がパスワードの変更禁止期間 (単位: 日) になります。
「最大値 (n3) より大きい値」は、このフィールド値が最大フィールドの値より大きい場合、パスワードを変更できません。変更しようとすると、次のメッセージが表示されます。「You may not change this password」
「n3 最大値」は、パスワードが作成されてから、使用できなくなるまでの日数を示します。この日数を過ぎると、ログインの際新しいパスワードの設定が強制されます。たとえば、パスワード作成時の最終変更日の値が 9201 で、最大値が 30 の場合、9231 (9201+30) 日目が経過した後は、ログイン時に新しいパスワードの設定が強制されます (詳細は、「パスワードの有効期間の設定」を参照)。
この値としては以下の 3 とおりが考えられます。
「0」は「次回のログイン時にパスワードの変更を強制し、その後は有効期間を設定する機能を停止する」ということを意味します。
「0 より大きい値」は、パスワードの有効期間の日数を指定します。
「マイナス1 (-1)」は、「-1」は、有効期間を設定する機能を停止するということを意味します。つまり passwd -x -1 username と入力すると、使用期間に関して該当ユーザーに行われていた設定はすべて解除されます。このフィールドを空白にしておくと、-1 として扱われます。
「n4 警告」は、パスワードの使用期間がその最大値に達する前に、パスワードを変更するように警告される日数です。たとえば、最終変更日時フィールドの値が 9201 、最大値フィールドの値が 30、警告フィールドの値が 5 であると仮定します。この場合、日付が 9226 日 (9201+30-5=9226) 以降になると、ログインするたびに「パスワードを変更してください」という警告が表示されます。パスワードの警告時期の詳細については、「警告期間の設定」を参照してください。
この値としては以下の 2 とおりが考えられます。
警告メッセージが表示される期間がないことを示します。
警告メッセージが表示される期間をその日数に指定します。
「n5 間隔」は、ログインとログインの間隔 (日数) の最大値です。ここで指定された日数を超える期間ログインを行わないと、ログインができなくなります。たとえば、間隔に 6 を指定した場合、6 日間ログインを行わないと 7 日目にはログインができなくなります (アカウントの最大ログイン間隔についての詳細は、「ログインの間隔の最大値の指定」を参照)。
この値としては以下の 2 とおりが考えられます。
「マイナス1 (-1)」は、最大ログイン間隔機能を解除します。任意の日数の間オフにすることができ、ログイン権限を失うことはありません。これがデフォルトです。
最大ログイン間隔 (日数) を指定します。
「n6 期限」は、パスワードの有効期限を示します。1970 年 1 月 1 日からの日数で表されます。この日を過ぎると、ログインができなくなります。たとえば、期限が 9739 (1995 年 9 月 1 日) に設定されている場合、1995 年 9 月 2 日 (GMT) になるとログインができなくなります。このときログインを試行すると「Login incorrect」というメッセージが表示されます (詳細は、「パスワード使用権の有効期限」を参照)。
この値としては以下の 2 とおりが考えられます。
「マイナス1 (-1)」は、有効期限の設定を解除します。パスワードが有効期限を過ぎている場合でも、-1 を設定すると再び使えるようになります。有効期限を設定したくないときは、-1 を指定するようにしてください。
有効期限の日付 (「1970 年 1 月 1 日から数えて何日目か」) です。現在以前の日付を設定すると、パスワードはすぐに無効になります。
「Login」はユーザーのログイン ID を指定します。
nistbladm を使用して passwd テーブルのシャドウ列を設定する場合、すべてのフィールドに適切な値を指定する必要があります。空白のまま残したり、0 を入力したりしても「変更なし」という意味にはなりません。
ユーザー amy が、パスワードの最終変更日が 1995 年 5 月 1 日 (1970 年 1 月 1 日から数えて 9246 日目)、パスワード作成後の変更禁止期間が 7 日、パスワードの有効期間が 30 日、「パスワードが間もなく無効になる」という警告が表示されるのがパスワード作成から 26 日目以降、ログインとログインの間隔の最大値が 15 日、アカウントの有効期限が (1970 年 1 月 1 日から) 9255 日目という設定にするには、以下のように入力します。
nistbladm -m shadow=9246:7:30:5:15:9285 [name=amy], passwd.org.dir |
パスワードの使用期間に関するパラメータは、日数で表されるものがほとんどです。日数を指定する際には以下の規則を守る必要があります。
1970 年 1 月 1 日を 0 とします。つまり 1970 年 1 月 2 日は 1 になります。
NIS+ では、日付の計算、カウントに GMT (Greenwich Mean Time) が使用されます。つまり日付が変更されるのは、GMT の午前 0 時です。
日数の指定には整数を使用します。小数は使用できません。
パスワードのロックなどの動作は、指定された日付に行われます。たとえば、パスワード使用権の有効期限を1995 年 1 月 2 日 (1970 年 1 月 1 日から 9125日目) に設定した場合、この日は「ユーザーがパスワードを使用できる最後の日」となります。パスワードが使用できなくなるのは、次の日からです。
最終変更日、期限のどちらのフィールドも、入力するのは 1970 年 1 月 1 日から数えた日数です。たとえば、以下のようになります。
表 16–2 1970 年 1 月 1 日からの日数
日付 |
日数 |
---|---|
1970 年 1 月 1 日 |
0 |
1970 年 1 月 2 日 |
1 |
1971 年 1 月 2 日 |
365 |
1997 年 1 月 1 日 |
9863 |
passwd および nistbladm コマンドと類似の機能を持つコマンドはほかにもあります。それぞれについて表 16–3 にまとめてあります。
表 16–3 関連コマンド
コマンド |
目的 |
---|---|
yppasswd |
現在は passwd コマンドにリンク。yppasswd を起動すると passwd コマンドが起動される |
nispasswd |
現在は passwd コマンドにリンク。nispasswd を起動すると passwd コマンドが起動される |
niscat |
テーブルの内容を表示するのに使用 |
ドメイン中のユーザーのパスワード情報を表示するには、passwd コマンドを使用します。情報は、全ユーザーについて同時に表示することも、ユーザーごとに表示することもできます。
自分のパスワード情報
passwd -s |
ドメインの全ユーザーの情報
passwd -s -a |
個々のユーザー
passwd -s username |
表示できるのは、エントリおよび列のうち読み取り権を持っているものだけです。エントリの表示形式は以下のとおりです。
使用期間に関する情報が省略されたもの: username status
使用期間に関する情報が付加されたもの: username status mm/dd/yy min max warn expire inactive
列 |
目的 |
参照箇所 |
---|---|---|
username |
ユーザーのログイン名 |
|
status |
パスワードの状態。PS は、そのアカウントにパスワードがあることを示す。LK は、そのパスワードがロックされていることを示す。NP は、そのアカウントにパスワードがないことを示す |
「パスワードのロック」を参照 |
mm/dd/yy |
パスワードが最後に変更された日付 (GMT で表す) |
|
min |
パスワード作成後の変更禁止期間 (日数) | |
max |
パスワードの有効期間 (日数) | |
warn |
「パスワードが間もなく無効になる」という警告が表示されるまでの日数 |
「警告期間の設定」を参照 |
expire |
パスワードの有効期限 (日付) | |
inactive |
ログインとログインの間隔の最大値 (日数)。ログインとログインの間隔がここで指定した日数を超えると、ログインができなくなる |
別のドメインの passwd テーブルのエントリを表示するには、-D オプションを使用します。
ドメイン中の全ユーザー
passwd -s -a -D domainname |
個々のユーザー
passwd -s -D domainname username |
新しいパスワードを作成するときは、「パスワードの必要条件」に示された必要条件を満たすようにします。
自分のパスワードを変更するには、以下のように入力します。
station1% passwd |
「古いパスワードの入力」、「新しいパスワードの入力」、「新しいパスワードの再入力 (確認のため)」という順にプロンプトが表示されるので、それに従って作業します。
同じドメイン内に存在するほかのユーザーのパスワードを変更するには、以下のように入力します。
passwd username |
ほかのドメイン内のユーザーのパスワードを変更するには、以下のように入力します。
passwd -D domainname username |
NIS+ 環境 (「passwd コマンドと NIS+ 環境」参照) で passwd コマンドを使用して他人のパスワードを変更する場合、passwd テーブルにおける該当ユーザーエントリへの変更権が必要になります。つまり、該当する passwd テーブルに対して変更権を持つグループのメンバーになる必要があります。このとき、該当ユーザーの古いパスワードや自分のパスワードを入力する必要はありません。確認のため新しいパスワードの入力を求めるプロンプトが 2 回表示されます。一致しない場合は、さらに 2 回入力する必要があります。
passwd コマンドで root のパスワードを変更した場合は、その直後に chkey -p を実行する必要があります。chkey -p を実行しないと、root で正しくログインできなくなります。
root のパスワードの変更手順は以下のとおりです。
root でログインします。
passwd コマンドで root のパスワードを変更します。
nispasswd は使用しないでください。
chkey -p を実行します。
必ず -p オプションを使用します。
NIS+ 環境 (「passwd コマンドと NIS+ 環境」を参照) では、passwd テーブルの該当ユーザーのエントリに対する変更権を持つ管理者 (グループのメンバー) が、passwd コマンドを使用してそのパスワードをロックできます。パスワードがロックされると、そのアカウントは使用できなくなります。また、パスワードがロックされているユーザー名を使ってログインをしようとすると、「Login incorrect」というメッセージが表示されます。
該当ユーザーがすでにログインしている場合、パスワードをロックすることによる影響は現れないという点に注意してください。ただ、パスワードの入力が必要になる login、rlogin、ftp、telnet などの機能は使用できなくなります。
すでにログインしているユーザーのパスワードをロックしても、そのユーザーが passwd コマンドでパスワードを変更するとロックは解除されます。
以下のようなことが有効です。
セキュリティ上の問題が発生している可能性があれば、すぐに一部のユーザーのパスワードをロックする
解雇になったユーザーのパスワードをすぐにロックする。ユーザーのアカウントを削除するより速く容易に行える上、そのアカウントに格納されているデータをそのまま容易に保管できる
UNIX プロセスにパスワードを設定している場合には、この種のパスワードもロックできる。パスワードがロックされてもプロセスの実行はできるが、プロセスを使用してログインすることは (たとえパスワードを知っていても) できなくなる。多くの場合、プロセスは NIS+ 主体の形では設定されない。しかしプロセスのパスワード情報は、/etc ディレクトリのファイルに保存される。このとき /etc に格納されたパスワードをロックするにはファイルモードで passwd コマンドを実行する必要がある。
パスワードのロックは以下のように行います。
passwd -l username |
パスワードのロックは、パスワードを変更すれば解除されます。この場合、「変更」とは必ずしもパスワードを新しいものに変えるという意味ではなく、パスワード変更の手順を踏むということです (元と同じパスワードに「変更」することも可能です)。ただし、新しいパスワードに変更することも可能です。
たとえば、jody というユーザーのパスワードのロックを解除するには、以下のように入力します。
station1% passwd jody |
設定により、パスワードの定期的な変更をユーザーに強制できます。
パスワードの有効期限については、以下のような設定が可能です。
次回のログイン時に強制的にパスワードを変更させる (詳細は、「パスワードの強制的な変更」を参照)
パスワードの有効期間 (日数) を設定する (詳細は、「パスワードの有効期間の設定」を参照)
パスワード作成後の変更禁止期間を設定する (詳細は、「パスワードの変更禁止期間の設定」を参照)
パスワードの有効期間が終わる前に「パスワードが間もなく無効になる」という警告メッセージが (ログイン時に) 表示されるタイミングを設定する (詳細は、「警告期間の設定」を参照)
ログインとログインの間隔の最大値 (日数) を指定する。指定された日数を超えてログインが行われないと、パスワードがロックされる (詳細は、「ログインの間隔の最大値の指定」を参照)
パスワードの有効期限 (日付) を設定する。この日を過ぎると、該当ユーザーはシステムにログインできなくなる (詳細は、「パスワード使用権の有効期限」を参照)
上記の警告期間や有効期間などに達したのがログインの行われた後であった場合、影響は現れません。そのまま普通に動作し続けます。
影響が現れるのは、次回のログイン時か、ログインを必要とする機能 (以下に例を示す) を使用した時です。
login
rlogin
telnet
ftp
パスワードの使用期間に関する設定は、ユーザーごとに行います。パスワードの使用期間に関する必要条件はユーザーによって違っている可能性があります。ユーザー一般にデフォルト設定を適用することもできます。詳細は、「パスワードの使用期間に関する設定」を参照してください。
次回ログイン時のパスワード変更をユーザーに強制するには、以下の 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 (-1)」は、「-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 値の指定がある場合のみ有効です。そのため、max 値の指定がない場合は、warn 値は意味がなくなります。
引数 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 引数と組み合わせて使用する。つまり、警告メッセージの表示期間を指定するには、有効期間の指定が必要になる
Solaris 管理コンソール を使用して、warm 値をユーザーのパスワード用に設定することもできます。
ユーザーのパスワードの有効期間を解除するには、以下の 2 つの方法があります。
有効期間を取り消す。パスワードはそのまま使用できる
passwd -x -1 username |
次回ログイン時にパスワードを強制的に変更させた後、有効期間を取り消す
passwd -x 0 username |
上記の方法では、max の値を 0 か -1 に設定する (詳細は、「パスワードの有効期間の設定」を参照)
たとえば、ユーザー mendez のパスワードを次回ログイン時に強制的に変更させ、その後パスワードの有効期間を解除するには、以下のように入力します。
station% passwd -x 0 mendez |
Solaris 管理コンソール を使用しても、このパラメータをユーザーのパスワード用に設定できます。
この値を設定するには、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 などログインを必要とする機能は使用できなくなり、いったんログアウトするとログインできなくなります。以上のことから、パスワード使用権に有効期限を設ける場合、毎日のワークセッション終了時には必ずログアウトするようユーザー全員に指示してください。
Solaris 管理コンソール ツールを使用して有効期限の設定ができるときは、nistbladm を使用しないでください。Solaris 管理コンソール ツールの方が使いやすく、設定を誤る可能性が低くなります。
nistbladm コマンドでパスワード使用権の有効期限を指定するには、以下のように入力します。
nistbladm -m `shadow=n:n:n:n:n:n6:n' [name=login],passwd.org_dir |
引数の意味はそれぞれ以下のとおりです。
login は、ユーザーのログイン ID です。
n は、シャドウ列の (n5 以外の) フィールドの値です。
n6 は、ユーザーのパスワード使用権の有効期限 (日付) を設定します。「1970 年 1 月 1 日から数えて何日目か」で表します (表 16–2 を参照)。このフィールドに指定する値には、以下の 2 種類があります。
「マイナス1 (-1)」は、有効期限の設定を解除します。ユーザーのパスワードがすでに有効期限を過ぎていても、-1 を設定することによって再び使用できるようになります。有効期限を設定したくないときは、初めから -1 を指定しておきます。
有効期限の日付 (「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 テーブルに指定します。この設定はネットワーク上のすべてのマシンで該当ユーザーに対して適用されます。
たとえば、ユーザー sam の最大ログイン間隔を 10 日間に設定した場合を考えてみましょう。sam は 1 月 1 日にマシン A とマシン B にログインをした後、ログアウトしました。続いて 3 日後の 1 月 4 日、sam はマシン B にログインした後ログアウトしました。さらに 9 日後の 1 月13日になると、sam はマシン B にはログインできますがマシン A にはログインできません。マシン B においては最終ログインから 9 日間しか経過していませんが、マシン A においては 13 日間が経過しているからです。
最大ログイン間隔の設定は、まだ一度もログインをしていないマシンには適用されないという点に注意してください。一度もログインをしていないマシンには、引数 inactive の設定およびほかのマシンへのログイン実績がどのようになっていようとログインが可能です。
「毎日の作業終了時には必ずログアウトをせよ」という指示がユーザーに対して行われていない場合、最大ログイン間隔の設定はしないでください。この設定はログインにだけ関係しており、ほかの形でシステムを使用する場合のことは考慮されていません。仮にユーザーが作業終了後もログインしたままの状態でシステムを放置しておくと、ログインが発生しないため指定のログイン間隔をすぐ超えてしまいます。指定のログイン間隔を超えた状態で再起動やログアウトをすると、再びログインできなくなります。
Solaris 管理コンソール ツールを使用して最大ログイン間隔の設定ができるときは、nistbladm を使用しないでください。Solaris 管理コンソール ツールの方が使いやすく、設定を誤る可能性が低くなります。
最大ログイン間隔の設定を nistbladm コマンドで行う場合は、以下の形式を使用します。
nistbladm -m `shadow=n:n:n:n:n5:n:n' [name=login],passwd.org_dir |
引数の意味はそれぞれ以下のとおりです。
login は、ユーザーのログイン ID です。
n は、シャドウ列の (n5 以外の) フィールドの値です。
n5 は、最大ログイン間隔 (日数) です。指定される値には、以下の 2 種類があります。
「マイナス1 (-1)」は、最大ログイン間隔機能を解除します。任意の日数の間オフにすることができ、ログイン権限を失うことはありません。これがデフォルトです。
最大ログイン間隔 (日数) を指定します。
たとえば、ユーザー sam の最大ログイン間隔を 7 日間に指定する場合は、以下のように入力します。
station1% nistbladm -m `shadow=n:n:n:n:n:7:n:n' [name=sam],passwd.org_dir |
最大ログイン間隔の設定を解除する (ログインできなくなったユーザーを再びログインできるようにする) には、nistbladm で最大ログイン間隔を -1 に設定します。
パスワードの使用規則に関する設定およびそのデフォルトについて説明します。
パスワード情報の獲得先が nsswitch.conf ファイルで files に指定されているすべてのユーザーのパスワードについて、4 つのデフォルト設定を行うためのファイルです。/etc/default/passwd ファイルで行われたデフォルト設定は、/etc ディレクトリのファイルからパスワード情報を獲得しているユーザーにだけ適用されます。パスワード情報の獲得先が NIS マップあるいは NIS+ テーブルであるようなユーザーには適用されません。NIS+ サーバー上の /etc/default/passwd ファイルは、パスワード情報をローカルファイルから獲得しているローカルユーザーにだけ影響を与えます。NIS+ サーバー上の /etc/default/passwd ファイルは、NIS+ 環境または、nsswitch.conf ファイルでパスワード情報の獲得先が nis、nisplus に設定されているユーザーには影響を与えません。
/etc/default/passwd ファイルで行われる「パスワードに関する 4 つのデフォルト設定」とは、具体的には以下のものを指します。
有効期間 (週単位)
変更禁止期間 (週単位)
「パスワードが間もなく無効になる」という警告メッセージの表示される期間 (週単位)
最低文字数
/etc/default/passwd ファイルのデフォルト設定には、以下の規則があります。
パスワード情報をローカルの /etc ディレクトリのファイルから得ているユーザーの場合、password コマンドまたは Solaris 管理コンソール で個々に行われた設定の方が、/etc/default/passwd のデフォルト設定よりも優先します。つまり /etc/default/passwd ファイルのデフォルト設定は、passwd テーブル中のエントリで (/etc/default/passwd の設定に対応した) 個別の設定が行われていないユーザーにだけ適用されるということです。
/etc/default/passwd ファイルのすべてのデフォルト設定は、パスワードの長さを除いて、週単位として表現されます。パスワードの有効期間は、日数として表現されます。
MAXWEEKS、MINWEEKS、 および WARNWEEKS のデフォルト値は、 の最終変更日を起点として計算されます。ただし、各警告値は、有効期限を起点として逆算されます。
/etc/default/passwd ファイルには、デフォルトでは以下のエントリがすでに含まれています。
MAXWEEKS= MINWEEKS= PASSLENGTH= |
設定に必要な作業は、= の後に適切な数字を入力することだけです。= の後に数字が入っていないエントリは無効です。たとえば、MAXWEEKS
に 4 を指定するには、以下のように入力します。
MAXWEEKS=4 MINWEEKS= PASSLENGTH= |
/etc/default/passwd ディレクトリのファイルの MAXWEEKS により、ユーザーのパスワードの有効期間を週単位で設定できます。ユーザーのパスワードの有効期間を週単位で指定するためのエントリです。以下に示すとおり、"=" の後に適切な数字を入力するだけで指定ができます。
MAXWEEKS=N |
N は週の数です。たとえば、MAXWEEKS=9 というようにします。
/etc/default/passwd ファイルの MINWEEKS デフォルト値には、ユーザーのパスワードの変更禁止期間を週単位で設定できます。パスワードの変更禁止期間を週単位で指定するためのエントリです。以下に示すとおり、"=" の後に適切な数字を入力するだけで指定ができます。
MINWEEKS=N |
N は週の数です。たとえば、MINWEEKS=2 というようにします。
/etc/default/passwd ファイルに WARNINWEEKS デフォルト値を追加し、パスワードの有効期間が切れて無効になる前に警告を表示する期間を、週単位で設定できます。たとえば、MAXWEEKS デフォルト値に 9 を設定したときに、パスワードが無効になる前の 2 週間に警告する場合は、MAXWEEKS に 7 を設定します。
MAXWEEKS のデフォルトを設定しない限り、WARNWEEKS のデフォルトを設定することはありません。
WARNWEEKS は、WARNWEEKS に指定された有効期限ではなく、パスワードの最終変更日を起点と考えて設定することに注意してください。したがって WARNWEEKS に、MAXWEEKS 以上の値を設定することはできません。
WARNWEEKS のデフォルトは、MAXWEEKS のデフォルトも一緒に設定されていない限り無効です。
WARNWEEKS は、以下に示すとおり "=" の後に適切な数字を入力するだけで指定ができます。
WARNWEEKS=N |
N は週の数です。たとえば、WARNWEEKS=1 というようにします。
passwd コマンドには、デフォルトで「パスワードの長さは6文字以上にする」という規則があります。しかし、/etc/default/passwd ファイルの PASSLENGTH を使用することによってこの規則を変更することが可能です。
パスワードの最低文字数を 6 以外の値にするには、以下に示すとおり PASSLENGTH= の後に適切な値を入力します。
PASSLENGTH=N |
N は文字数です。たとえば、PASSLENGTH=7 というようにします。
パスワード変更の際の入力試行回数と所要時間には、制限を設定できます。設定は rpc.nispasswdd デーモン起動時の引数で行います。
入力試行回数を制限したり、タイムウィンドウを設定したりすることにより、「権利のない人が、パスワードを試行錯誤で知ることのできるものに変えてしまう」という危険をある程度 (完璧ではない) 回避できます。
パスワード変更時の誤入力試行回数を制限するには、rpc.nispasswdd に -a number という引数 (number は試行回数) を指定します。rpc.nispasswdd を起動するには、NIS+ マスターサーバー上にスーパーユーザー特権が必要です。
誤入力試行回数を 4 に制限する (デフォルトは 3) 場合、以下のように入力します。
station1# rpc.nispasswdd -a 4 |
この場合、4 回目のパスワード入力が失敗すると、「Too many failures - try later」というメッセージが表示され、一定の時間が経過するまで該当ユーザーのパスワード変更はできなくなります。
パスワード変更時の所要時間 (ログインの所要時間) を制限するには、rpc.nispasswdd に -c minutes という引数 (minutes には時間を分単位で指定する) を指定します。rpc.nispasswdd を起動するには、NIS+ マスターサーバー上にスーパーユーザー特権が必要です。
たとえば、ユーザーが 2 分以内にログインしなければならないように設定するには、以下のように入力します。
station1# rpc.nispasswdd -c 2 |
この場合、2 分以内にパスワードの変更に成功しないとエラーメッセージが表示され、一定の時間が経過するまで該当ユーザーのパスワード変更はできなくなります。