この節では、ユーザーのログイン情報を表示する方法について説明します。
logins コマンドを使用してユーザーのログイン状態を表示します。
# logins -x -l username
-x |
ログイン状態情報の拡張セットを表示する |
-l username |
指定するユーザーのログイン状態を表示する。username はユーザーのログイン名。複数のログイン名は、コンマで区切って指定する |
logins コマンドは、ローカルの /etc/passwd ファイルと NIS または NIS+ パスワードデータベースを使用して、ユーザーのログイン状態を表示します。
次の例には、ユーザー rimmer のログイン状態が表示されています。
# logins -x -l rimmer rimmer 500 staff 10 Arnold J. Rimmer /export/home/rimmer /bin/sh PS 010170 10 7 -1
rimmer |
ユーザーのログイン名を示す |
500 |
UID (ユーザー ID) を示す |
staff |
ユーザーの一次グループを示す |
10 |
GID (グループ ID) を示す |
Arnold J. Rimmer |
コメントを示す |
/export/home/rimmer |
ユーザーのホームディレクトリを示す |
/bin/sh |
ログインシェルを示す |
PS 010170 10 7 -1 |
次のパスワードの有効日数情報を示す o パスワードの最終変更日 o 次に変更するまでに必要な日数 o 変更しないで使用できる日数 o 警告期間 |
ユーザー全員が有効なパスワードを持っているかどうかを確認する必要があります。
スーパーユーザーになります。
logins コマンドを使用して、パスワードを持っていないユーザーを表示します。
# logins -p
-p |
パスワードを持っていないユーザーのリストを表示する |
logins コマンドは、ローカルの /etc/passwd ファイルと NIS または NIS+ パスワードデータベースを使用して、ユーザーのログイン状態を表示します。
次の例には、パスワードを持っていないユーザー pmorph が表示されています。
# logins -p pmorph 501 other 1 Polly Morph #
ユーザーのログインを一時的に無効にするには、次のようにします。
/etc/nologin ファイルを作成します。
システムを実行レベル 0 (シングルユーザーモード) にします。システムをシングルユーザーモードにする方法については、第 7 章「システムのシャットダウンの手順」を参照してください。
このファイルを作成する目的は、システムシャットダウンや定期保守のためにシステムが一定の時間利用できなくなるときに、ユーザーのログインを禁止して、ユーザーに通知することです。
このファイルが存在するシステムにユーザーがログインしようとすると、nologin ファイルの内容が表示されて、ユーザーのログインは中断されます。スーパーユーザーのログインは影響を受けません。
スーパーユーザーになります。
エディタを使用して、/etc/nologin ファイルを作成します。
# vi /etc/nologin
システムの利用に関するメッセージを入力します。
ファイルを閉じて、保存します。
この例は、システムが利用できないことをユーザーに通知する方法を示しています。
# vi /etc/nologin (ここでシステムメッセージを追加する。) # cat /etc/nologin ***No logins permitted.*** ***The system will be unavailable until 12 noon.***
root 専用の読み取り権と書き込み権を使用して /var/adm/loginlog ファイルを作成すると、失敗したログイン操作を保存できます。loginlog ファイルを作成した後は、操作に 5 回以上失敗すると、失敗したログイン操作がすべてこのファイルに自動的に書き込まれます。詳細は、「失敗したログイン操作を保存する方法」を参照してください。
loginlog ファイルには、失敗した操作ごとに 1 つずつエントリが入っています。各エントリには、ユーザーのログイン名、tty デバイス、操作の失敗回数が入っています。4 回以下の失敗であれば、ログに記録されません。
loginlog ファイルは急激に大きくなることがあります。このファイル内の情報を使用し、ファイルが大きくなりすぎないようにするには、ファイルの内容をときどきチェックして消去しなければなりません。このファイルが多数の作業を示す場合は、コンピュータシステムに誰かが侵入しようとした可能性があります。このファイルの詳細は、loginlog(4) のマニュアルページを参照してください。
/var/adm ディレクトリ内で loginlog ファイルを作成します。
# touch /var/adm/loginlog
loginlog ファイル上で root 用の読み取り権と書き込み権を設定します。
# chmod 600 /var/adm/loginlog
loginlog ファイル上でグループのメンバーシップを sys に変更します。
# chgrp sys /var/adm/loginlog
ログが機能していることを確認するには、loginlog ファイルを作成した後で、間違ったパスワードを使用してシステムに 5 回ログインします。次に、/var/adm/loginlog ファイルを表示します。
# more /var/adm/loginlog pmorph:/dev/pts/0:Fri Jan 13 08:55:23 1996 pmorph:/dev/pts/0:Fri Jan 13 08:55:31 1996 pmorph:/dev/pts/0:Fri Jan 13 08:55:39 1996 pmorph:/dev/pts/0:Fri Jan 13 08:55:50 1996 pmorph:/dev/pts/0:Fri Jan 13 08:56:00 1996 #
モデムやダイヤルアップポートを通じてシステムにアクセスするユーザーに「ダイヤルアップパスワード」を要求して、パスワード機構にセキュリティ層を追加できます。ダイヤルアップパスワードは、ユーザーがシステムへのアクセス権を取得する前に入力しなければならないパスワードです。
スーパーユーザー以外はダイヤルアップパスワードを作成または変更できません。システムの完全性を確保するために、月に一度はパスワードを変更する必要があります。この機構の最も有効な使用方法は、ゲートウェイシステムへのアクセス権を取得するためのダイヤルアップパスワードを要求することです。
ダイヤルアップパスワードの作成には、/etc/dialups と /etc/d_passwd という 2 つのファイルが必要です。/etc/dialups には、ダイヤルアップパスワードが必要なポートのリストが入っています。/etc/d_passwd には、ダイヤルアップパスワードとして暗号化されたパスワードを要求するシェルプログラムのリストが入っています。
/etc/dialups ファイルには、次のような端末装置のリストが含まれます。
/dev/term/a /dev/term/b
/etc/d_passwd ファイルには 2 つのフィールドがあります。1 つのフィールドはパスワードを要求するログインシェルで、もう 1 つのフィールドは暗号化されたパスワードです。/etc/dialups ファイルと /etc/d_passwd ファイルは次のように使用されます。
ユーザーが /etc/dialups にリストされたポート上でログインしようとすると、ログインプログラムは /etc/passwd に格納されたユーザーのログインエントリを検索し、ログインシェルを /etc/d_passwd 内のエントリと比較します。これらのエントリによって、ユーザーがダイヤルアップパスワードを入力する必要があるかどうかが決まります。
/usr/lib/uucp/uucico:encrypted_password: /usr/bin/csh:encrypted_password: /usr/bin/ksh:encrypted_password: /usr/bin/sh:encrypted_password:
図 52-1 に、基本的なダイヤルアップパスワードシーケンスを示します。
ほとんどのユーザーはログインするときにシェルを実行しているので、すべてのシェルプログラムのエントリが /etc/d_passwd 内に必要です。この種のプログラムは、uucico、sh、ksh、csh などです。一部のユーザーがログインシェルから何か実行する場合は、そのログインシェルもファイルに含めてください。
ユーザーのログインプログラム (/etc/passwd 内で指定) が /etc/d_passwd 内で見つからない場合や、/etc/passwd 内のログインシェルフィールドが空 (NULL) の場合は、/usr/bin/sh のパスワードエントリが使用されます。
/etc/passwd 内のユーザーのログインシェルが /etc/d_passwd 内で見つからない場合、そのユーザーはデフォルトのパスワードを入力しなければなりません。デフォルトのパスワードは /usr/bin/sh のエントリです。
/etc/passwd 内のログインシェルフィールドが空の場合、そのユーザーはデフォルトのパスワード (/usr/bin/sh のエントリ) を入力しなければなりません。
/etc/d_passwd に /usr/bin/sh のエントリがない場合、/etc/passwd 内のログインシェルフィールドが空のユーザー、または /etc/d_passwd 内のエントリと一致しないユーザーには、ダイヤルアップパスワードの入力を促すパスワードは表示されません。
最初にダイヤルアップパスワードを設定するときには、少なくとも 1 つの端末にログインしている状態で、別の端末上でパスワードをテストしてください。余分のパスワードをインストールし、ログアウトして新しいパスワードをテストする間にミスすると、元どおりログインできなくなることがあります。まだ別の端末にログインしていれば、元に戻ってミスを訂正できます。
スーパーユーザーになります。
ダイヤルアップパスワード保護が必要なすべてのポートなど、端末装置のリストが入った /etc/dialups ファイルを作成します。
/dev/term/a |
/dev/term/b |
/dev/term/c |
ダイヤルアップパスワードを要求するログインプログラムと暗号化されたダイヤルアップパスワードが入った /etc/d_passwd ファイルを作成します。
uucico、sh、ksh、csh など、ユーザーがログイン時に実行できるシェルプログラムを含めます。/etc/d_passwd ファイルは次のようになります。
/usr/lib/uucp/uucico:encrypted_password: |
/usr/bin/csh:encrypted_password: |
/usr/bin/ksh:encrypted_password: |
/usr/bin/sh:encrypted_password: |
2 つのファイルの所有権を root に設定します。
# chown root /etc/dialups /etc/d_passwd
2 つのファイルのグループの所有権を root に設定します。
# chgrp root /etc/dialups /etc/d_passwd
2 つのファイルの root の読み取り権と書き込み権を設定します。
# chmod 600 /etc/dialups /etc/d_passwd
暗号化パスワードを作成します。
user-name.temp ファイルから /etc/d_passwd ファイルに暗号化パスワードをコピーします。
ログインシェルごとに別々のパスワードを作成するか、共通のパスワードを使用できます。
スーパーユーザーアカウントは、基本的な機能を実行するためにオペレーティングシステムに使用され、オペレーティングシステム全体を広範囲に制御します。また、スーパーユーザーアカウントは重要なシステムプログラムにアクセスして実行できます。このため、スーパーユーザーによって実行されるプログラムの場合、セキュリティ上の制約はほとんどありません。
/etc/default/login ファイルを通じて特定の装置へのスーパーユーザーアクセスを制限すると、システム上のスーパーユーザーアカウントを保護できます。たとえば、スーパーユーザーアクセスをコンソールに限定しておけば、コンソールからしかスーパーユーザーとしてシステムにログインできなくなります。誰かがシステムにリモートログインして管理作業を実行する場合は、まず自分のユーザーログインを使用してログインしてから、su コマンドを使用してスーパーユーザーにならなければなりません。詳細は、「スーパーユーザー (root) ログインをコンソールに制限する方法」を参照してください。
システムをインストールするときには、コンソールへのスーパーユーザーログインはデフォルトで制限されます。
/etc/default/login ファイルを編集します。
次の行のコメントを解除します。
CONSOLE=/dev/console
このシステムにリモートログインするユーザーは、まず自分のユーザーログインを使用してログインしてから、su コマンドを使用してスーパーユーザーにならなければなりません。
このシステムにスーパーユーザーとしてリモートログインして、操作が失敗することを確認してください。
su コマンドの試行に対する監視は /etc/default/su ファイルを通じて開始できます。このファイルを通じて、/var/adm/sulog ファイルを使用可能にし、su コマンドを使用して別のユーザーに変更されるたびに監視できます。詳細は、「su コマンドを使用中のユーザーを監視する方法」を参照してください。
sulog ファイルには、ユーザーをスーパーユーザーに切り替えるコマンドではなく、su コマンドのすべての使用状況がリストされます。各エントリは、コマンドが入力された日時、su コマンドの成否 (+ または -)、コマンドが実行されたポート、およびユーザー名と切り替え後の識別名を示します。
また、/etc/default/su ファイルを通じて、リモートシステムから su コマンドを使用してスーパーユーザーアクセス権を取得しようとする操作が発生するたびにコンソールに表示されるようにシステムを設定できます。これは、現在作業中のシステム上で誰かがスーパーユーザーアクセス権を取得しようとした場合に、それを即座に検出する優れた方法です。詳細は、「コンソールへのスーパーユーザー (root) アクセス操作を表示する方法」を参照してください。
/etc/default/su ファイルを編集します。
次の行のコメントを解除します。
SULOG=/var/adm/sulog
/etc/default/su ファイルを変更し終わったら、su コマンドを何度か使用して /var/adm/sulog ファイルを表示します。su コマンドを使用した時刻ごとにエントリが表示されます。
# more /var/adm/sulog SU 12/20 16:26 + pts/0 nathan-root SU 12/21 10:59 + pts/0 nathan-root SU 01/12 11:11 + pts/0 root-joebob SU 01/12 14:56 + pts/0 pmorph-root SU 01/12 14:57 + pts/0 pmorph-root