第 25章ユーザーとグループの管理

ユーザーアカウントの追加や削除は、最も頻繁に行われるシステム管理タスクの 1 つです。システム管理者である root は、ユーザーアカウントを追加し、そのユーザーにシステムの資源を利用できる権利を与えます。そして、アカウントを取得したユーザーは、ユーザー名とパスワードによる認証を行うことによって、そのシステムにログインできるようになります。また、システム管理者は、複数のユーザーをグループと呼ばれる単位で管理することもあります。通常、システム管理者がユーザーやグループを管理するには、以下のコマンドを使用します。あるいは、これらのコマンドのフロントエンドとして動作する管理ツールを使用します。

この章では、はじめに、Turbolinux 10 Server がユーザーやグループの情報を保持している管理ファイルについて解説します。その後で、これらの管理コマンドの使用方法を解説します。管理ファイルは、これらのコマンドを実行することによって編集されますので、テキストエディタで直接ファイルを編集する必要はありません。

25.1. ユーザー管理ファイル

Turbolinux 10 Server のユーザー情報は、/etc/passwd と /etc/shadow ファイルで管理されています。システム管理者である root が useradd コマンドで新規ユーザーを登録すると、これらのファイルにユーザーの情報が登録されます。以下に Turbolinux 10 Server インストール後の標準的な /etc/passwd の例を示します。

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
adm:x:3:4:adm:/var/adm:
lp:x:4:7:lp:/var/spool/lpd:
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:
news:x:9:13:news:/var/spool/news:
uucp:x:10:14:uucp:/var/spool/uucp:
operator:x:11:0:operator:/root:
games:x:12:100:games:/usr/games:
gopher:x:13:30:gopher:/usr/lib/gopher-data:
gdm:x:42:42::/home/gdm:/bin/bash
ftp:x:14:50:FTP User:/var/ftp:
nobody:x:99:99:Nobody:/:
smbguest:x:300:300:SMB Guest Account:/:/sbin/nologin
rpm:x:37:37::/var/lib/rpm:/bin/bash
sshd:x:301:302:SSH daemon:/:/bin/false
rpcuser:x:29:29:Portmapper RPC user:/var/lib/nfs:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
apache:x:48:48:Apache:/var/www:/bin/bash
jabber:x:130:130:Jabber Server:/var/lib/jabber:/bin/bash
amanda:x:33:6:Amanda user:/var/lib/amanda:/bin/bash
named:x:53:53::/var/named:/sbin/nologin
icecast:x:57:57:Streamcast:/:/sbin/nologin
mysql:x:302:303:MySQL Server:/var/lib/mysql:/bin/bash
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
squid:x:303:304::/var/spool/squid:/sbin/nologin
taro:x:500:500::/home/taro:/bin/bash

1 行につき 1 ユーザーの情報が登録されており、行はコロン : で 7 つのフィールドに分かれています。

account:password:UID:GID:GECOS:directory:shell

useradd コマンドで一般ユーザーを登録すると、500 番から使用されていないユーザー ID(UID)が自動的に割り当てられます。この例では、taro という一般ユーザーが登録されていることが分かります。/etc/passwd には、他にも様々なユーザーが初期状態で登録されていますが、これらのユーザーは、Turbolinux 10 Server のインストール時に自動的に作成されたシステムユーザーです。システムにおけるユーザーは、人と直接結びついたユーザーではなく、アプリケーションやネットワークサービスなど特定のタスクを実行するために用意された擬似的なユーザーです。

各フィールドの意味は以下の通りです。

account

各ユーザーに割り当てたユーザー名が登録されます。ログイン名とも言われます。

password

Turbolinux 10 Server はシャドウパスワードを採用しているため、このフィールドは x となります。実際のパスワードは、/etc/shadow ファイルで管理されます。シャドウパスワードは、/etc/passwd がパスワードを管理する重要なファイルであるにもかかわらず、一般ユーザーでも参照可能なアクセス権限が設定されているため、パスワード情報のセキュリティを強化したものです。/etc/shadow ファイルは root ユーザーだけがアクセス可能です。

UID

各ユーザーに割り当てられる固有の番号です。ユーザー ID(UID)が 0 のユーザーが root となります。useradd コマンドで一般ユーザーを登録すると 500 番から使用されていない UID が自動的に割り当てられます。

GID

ユーザーのプライマリグループの ID(GID)が登録されます。Turbolinux 10 Server では、ユーザーアカウントを新規に登録すると同時に、ユーザーと同じ名前のグループを作成し、そのグループをユーザーのプライマリグループとします。グループの情報は、/etc/group ファイルで管理されています。

プライマリグループとは、ユーザーがシステムにログインしたときのデフォルトのグループです。また、ユーザーはプライマリグループだけでなく、複数のグループに属することも可能です。それらのグループはセカンダリグループと呼ばれます。ユーザーは、newgrp コマンドを実行して現在のグループ(カレントグループ)を変更することができます。カレントグループの変更が必要になるのは、ユーザーが新規ファイルを作成するときなどです。作成したファイルの所有グループは、ユーザーのカレントグループになります。

GECOS

ユーザー情報です。以前、このフィールドにユーザー情報を格納していたオペレーティングシステムの名前に由来して GECOS フィールドと呼ばれることもあります。必ずしも登録が必要なフィールドではありません。慣例的に "フルネーム,オフィスの部屋番号,オフィスの内線番号,自宅の電話番号,その他" の情報がカンマ , 区切りで登録されていましたが、今では、このようなプライベートな情報をこのフィールドに登録するべきではありません。通常はユーザーのフルネームだけが登録されます。

directory

ユーザーのホームディレクトリが登録されます。ユーザーがシステムにログインした際のカレントディレクトリとなります。

shell

ユーザーがログインしたときに使用するデフォルトのシェルが指定されます。Turbolinux 10 Server では /bin/bash がデフォルトのシェルとして指定されます。

次に、シャドウパスワードの管理ファイルである /etc/shadow に登録されたパスワード情報の例を示します。passwd コマンドでユーザーのパスワードを設定すると、以下のように、各ユーザーのパスワード情報が登録されます。

taro:$1$0jPVhiP4$eSVTKpO/kJGuXxLzAnTB8.:12634:0:99999:7:::

1 行につき 1 ユーザーのパスワード情報が登録されており、各行はコロン : で 9 つのフィールドに分かれています。

Login_name:Encrypted_password:Last_Password_Change:Minimum_Password_Age:Maximum_Password_Age:Warning_days:Password_Inactive:Password_Expiration_Warning:Reservation_field

各フィールドの意味は以下の通りです。

Login_name

各ユーザーに割り当てたユーザー名が登録されます。

Encrypted_password

MD5 で暗号化されたユーザーのパスワードが登録されます。パスワードの前に ! が付いている場合は、そのユーザーのパスワードはロックされます。パスワードをロックされたユーザーは、パスワードを入力してもログインすることはできません。

Last_Password_Change

1970/01/01 から最後にパスワードを変更した日までの日数が登録されます。

Minimum_Password_Age

ユーザーに新しいパスワードを保持させる日数を指定します。この日数を経過しなければ、パスワードを変更することはできません。

Maximum_Password_Age

ユーザーが同じパスワードを使用できる日数を指定します。この日数を経過したら、パスワードを変更しなければなりません。

Warning_days

パスワードの使用期限が近づいたことを、何日前からユーザーに通知するかを指定します。

Password_Inactive

パスワードの使用期限が切れてから、何日間アカウントを使用することを許可するかを指定します。この期間にユーザーがログインを試みると、パスワードを変更を強制されます。この期間にユーザーがパスワードを変更しなかった場合、自動的にアカウントは使用不可となります。

Password_Expiration_Warning

アカウントを自動的に使用不可にする日を 1970/01/01 からの日数で登録されます。たとえ猶予期間内であってもパスワードは使用不可となります。

Reservation_field

将来の拡張のために用意されたフィールドで、特に利用されていません。