Linuxを使い始めた人,資格試験合格を目指す人を対象に,模擬試験形式でLinuxの基礎を解説します。

問題:次の説明文のA~Dに,適切な語句を入れなさい。

 ユーザーの追加は( A )コマンドで行う。標準的なLinuxディストリビューションのインストールでは,シャドウ・パスワードが適用され,暗号化されたパスワードは( B )に記録される。シャドウ化されない場合は( C )に記録されるが,( D )コマンドでシャドウ化できる。

ポイント:通常,パスワードは/etc/passwdファイルでなく,/etc/shadowファイルに記録されます。これを「シャドウ・パスワード」と呼びます。管理者しか読めない/etc/shadowにパスワード情報を記録することで安全性を高めています。

キーワード:ユーザー作成,シャドウ・パスワード,useradd,pwconv

 Linuxシステムでは,システムの利用者ごとにユーザー・アカウントを作成します。ユーザーを作成するには,管理者権限で

# useradd ユーザー名

を実行します*3。この時点でパスワードの設定は必要ありません*4。作成されたユーザーの情報は,/etc/passwdと/etc/shadowというテキスト・ファイルに記録されます。/etc/passwdにはユーザーのログイン・シェルやホーム・ディレクトリなどの情報が,/etc/shadowにはパスワードの有効期限などが記述されます。

パスワードの設定

 ユーザーを追加した直後はパスワードが設定されていません。そのため,ログインできるようにパスワードを設定する必要があります。パスワードは,通常,

# passwd ユーザー名

で設定するのが一般的です。変更するときも同じ書式で行えます。

 chpasswdコマンドを使用すると,複数ユーザーのパスワードを一括で登録できます(図2)。

図2●chpasswdコマンドを使ってパスワードを指定する例
図2●chpasswdコマンドを使ってパスワードを指定する例
「ユーザー名:パスワード」の形式で記述していく。
[画像のクリックで拡大表示]

シャドウ・パスワード

 /etc/passwdと/etc/shadowには,1行ごとにユーザーごとの情報がまとめられ,「:」で区切ってさまざまな情報が記録されます。各行の先頭にはユーザー名,2つ目にはパスワードが記述されることになっています。ところが,大抵のディストリビューションでは,/etc/shadowに暗号化されたパスワードが記述され,/etc/passwdには「x」とだけ書かれています。

 /etc/passwdファイルは,各ユーザーの個人情報が記述されており,誰でも読み出せるようになっています(アクセス権は「rw-r--r--」)。そのため,ここにパスワードを記述すると,他人のパスワードまで見ることができます。以前は,暗号化してパスワードを記述していましたが,セキュリティ上問題があり,現在では管理者しか読み出せない/etc/shadowファイルのみに記録する場合がほとんどです。このことを「シャドウ・パスワード」または「パスワードのシャドウ化」と呼びます。

 シャドウ・パスワードを利用したくない場合は,インストール時に詳細設定からオフにすることが可能です(写真1)。インストール後にオフにしたい場合は,pwunconvコマンドを実行し,オンにしたい場合はpwconvコマンドを実行します(図3)。

写真1●インストール時にシャドウ・パスワードをオフにできるオプション
写真1●インストール時にシャドウ・パスワードをオフにできるオプション
写真はFedora Core 5の場合。
[画像のクリックで拡大表示]

図3●ユーザーを作成し,/etc/shadowなどを確認した例
図3●ユーザーを作成し,/etc/shadowなどを確認した例
[画像のクリックで拡大表示]

パスワード・ロック

 図3で,ユーザーを追加した直後に/etc/shadowファイルを確認すると,パスワード欄が「!!」となっています。これは一時的にユーザーがログインできない「パスワード・ロック」という状態を指します。

 パスワードを設定したり,管理者権限で/etc/shadowをテキスト・エディタで開き,「!!」を削除したりすれば,ログインできるようになります。「!!」を削除した場合は,パスワードなしでログインができます。

 パスワード・ロックは,

# passwd -u ユーザー名

で解除できます。パスワードを設定していない状態で解除すると,パスワードなしでログインができるようになります。また,「-l」オプションで再びロックをかけられます(図4)。

図4●新規ユーザーを作成した直後はパスワード・ロックがかかっている
図4●新規ユーザーを作成した直後はパスワード・ロックがかかっている
[画像のクリックで拡大表示]

 passwdの代わりにusermodコマンドでも同様のロックをかけられます。この場合は,ロックをかけるオプションは「-L」,解除は「-U」になります。このときは,/etc/shadowのパスワード欄には「!」の1文字だけが記述されます。

 いずれの方法も,該当ユーザーはログイン時に正しいパスワードを入力しても,パスワードを間違えた場合と同じ結果になります。

 なお,管理者(root)が「# su - ユーザー名」でユーザーを切り替える場合は,パスワードのチェックを行わないため,パスワード・ロックがかかっていてもログインができます。

ユーザーのロック

 あるユーザーに対し,明示的にログインできないことを伝える場合は,ログイン・シェルを「/sbin/nologin」に指定します。こうすれば,そのユーザーがログインしても,写真2のように自動的にログアウトされます。

写真2●起動シェルに「/sbin/nologin」を指定されたユーザーがログインした例
写真2●起動シェルに「/sbin/nologin」を指定されたユーザーがログインした例
すぐにログアウトさせられる。

 設定にはchshコマンドもしくはusermodを利用します。

# chsh -s ログイン・シェル ユーザー名
もしくは
# usermod -s ログイン・シェル ユーザー名

で指定できます。chshコマンドは一般ユーザーが自身のアカウントをロックするときにも変更できます。また単に,「$ chsh」と実行すれば,対話形式でログイン・シェルを変更できます。

 グラフィカル・ログインでなく,CUIベースのログインでは,ロックされていると/etc/nologin.txtファイルの内容が表示されて,ログアウトされます。

パスワードの有効期限

 パスワードには,有効期限を設定できます。設定は,useradd,usermod,chageといったコマンドでできます。特にchageコマンドは,対話的に設定できるので便利です(図5)。

図5●chageコマンドでパスワードの有効期限など設定できる
図5●chageコマンドでパスワードの有効期限など設定できる
[画像のクリックで拡大表示]

 パスワードの有効期限を設定して,その期限が過ぎると,ログイン直後にパスワード設定を強制されます(写真3)。

写真3●パスワードの有効期限が切れた例
写真3●パスワードの有効期限が切れた例
パスワード変更を強要される。
[画像のクリックで拡大表示]

 図5の「パスワード無効日数」を設定すると,パスワードの有効期限後,指定日数を経過するとログインができなくなります。また,「アカウント期限切れ日付」を設定しても同様にログインができなくなります(写真4)。

写真4●アカウントの有効期限が切れた例
写真4●アカウントの有効期限が切れた例
ログインできない。
[画像のクリックで拡大表示]

類題

Q1 /etc/passwdと/etc/shadowのアクセス権は,それぞれどれか,次の中から選びなさい。

(A)rwxr-xr-x (B)rw-rw-rw- (C)rw-r--r-- (D)r--------

【問題と類題の解答は次ページ】