107.1 レッスン 1
Certificate: |
LPIC-1 |
---|---|
Version: |
5.0 |
Topic: |
107 管理タスク |
Objective: |
107.1 ユーザーとグループのアカウント管理と関連ファイル |
Lesson: |
1 of 2 |
はじめに
ユーザーとグループの管理は、システム管理者の非常に重要な業務です。最新のLinuxディストリビューションは、この重要な業務に関わるすべてのアクティビティを簡単かつ効率的に行うためのグラフィカルインターフェイスを備えています。それらのツールは、グラフィカルな表現は異なっていますが機能的にはほぼ同じで、ローカルユーザーとグループを表示、編集、追加、および削除できます。ただし、高度な管理を行うには、コマンドラインを使用する必要があります。
ユーザーアカウントの追加
Linuxでは、useradd
コマンドを使用して新しいユーザーアカウントを追加します。たとえば、michael
という名前の新しいユーザーアカウントをデフォルト設定で作成するには、root権限で次のコマンドを実行します。
# useradd michael
useradd
コマンドを実行すると、新しく作成されたユーザーアカウントの情報が、パスワードデータベースとグループデータベースに追加されます。オプションを指示すれば新しいユーザーのホームディレクトリも作成されます。多くのディストリビューションでは、新しいユーザーアカウントと同名のグループも作成されます。
新しいユーザーを作成したら、passwd
コマンドを使用してそのパスワードを設定します。id
と groups
コマンドを使用すれば、作成したユーザーアカウントのユーザーID(UID)、グループID(GID)、所属するグループを確認できます。
# passwd michael Changing password for user michael. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. # id michael uid=1000(michael) gid=100(michael) groups=100(michael) # groups michael michael : michael
Note
|
一般ユーザーを含めて、引数を与えない |
useradd
コマンドの主要なオプションを以下に示します:
-c
-
作成するユーザーアカウントに、独自のコメント(たとえばユーザーのフルネーム)をセットします。
-d
-
作成するユーザーアカウントの、ホームディレクトリを指定します。
-e
-
作成するユーザーアカウントを無効化する日付を(YYYY-MM-DD形式で)指定します。
-f
-
作成するユーザーアカウントに対して、パスワードの有効期限が切れてから、アカウントが無効化されるまでの日数(その間にユーザーはパスワードを更新できる)を指定します。
-g
-
作成するユーザーアカウントのプライマリグループID(GID)を指定します。
-G
-
作成するユーザーアカウントが所属する、複数のセカンダリグループを(GIDないしグループ名で)指定します。
-k
-
作成するユーザーアカウントに対して、コピーするスケルトンファイルが存在するディレクトリを指定します。(このオプションは、
-m
または--create-home
オプションが指定されている場合にのみ有効です)。 -m
-
ユーザーアカウントのホームディレクトリを作成します(存在しない場合)。
-M
-
作成するユーザーアカウントのホームディレクトリを作成しないことを指定します。
-s
-
作成するユーザーアカウントのログインシェルを指定します。
-u
-
作成するユーザーアカウントのプライマリUIDを指定します。
すべてのオプションのリストは、useradd
コマンドのマニュアルを参照してください。
Note
|
すべてのユーザーアカウントは、少なくとも1つのグループに所属する必要あり、それをプライマリグループと呼びます。その他のグループはセカンダリグループです。プライマリグループとセカンダリグループに機能的な違いはありませんが、保管されるデータベースが異なっています。 |
ユーザーアカウントの変更
ログイン名、ログインシェル、パスワードの有効期限など、既存のユーザーアカウントの属性を変更するには、usermod
コマンドを使用します。
# usermod -s /bin/tcsh michael # usermod -c "Michael User Account" michael
useradd
コマンドと同様に、usermod
コマンドの実行にはroot権限が必要です。
1つ目の例では、michael
のログインシェルを変更していて、2つの目の例ではユーザーに簡単なメモ(通常はフルネームや所属部署など)を追加しています。1つのコマンドに複数のオプションを指定すれば、複数の属性を一度に変更できます。
usermod
コマンドの主要なオプションを以下に示します:
-c
-
指定したユーザーアカウントに、簡単なメモ(本名や所属部署など)を追加します。
-d
-
指定したユーザーアカウントのホームディレクトリを変更します。
-m
オプションを一緒に指定すると、現在のホームディレクトリの内容が新しいホームディレクトリに移動されます。新しいホームディレクトリがまだ存在しない場合には、作成されます。 -e
-
指定したユーザーアカウントが無効となる日付を、
YYYY-MM-DD
形式で指定します。 -f
-
指定したユーザーアカウントに対して、パスワードの有効期限が切れてから、アカウントが無効化されるまでの日数(その間にユーザーはパスワードを更新できる)を指定します。
-g
-
指定したユーザーアカウントのプライマリグループを変更します(変更後のグループが存在している必要があります)。
-G
-
指定したユーザーアカウントに、セカンダリグループを追加します。追加するグループは存在している必要があり、複数のグループを追加する場合には空白を挟まずにコンマで次のグループと区切ります。このオプションのみを指定するとそれまでにユーザーが属していたセカンダリグループから外されますが、
-a
オプションを併用すると既存のグループに加えて新しいセカンダリグループに参加します。 -l
-
指定したユーザーアカウントのログイン名を変更します。ホームディレクトリは変更されません。
-L
-
指定したユーザーアカウントをロックします。これにより、
/etc/shadow
ファイル内の暗号化されたパスワードの前に感嘆符が付けられて、そのユーザーのパスワードによるアクセスが無効になります。詳しくは次のレッスンで解説します。 -s
-
指定したユーザーアカウントのログインシェルを変更します。
-u
-
指定したユーザーアカウントのUIDを変更します。ユーザーのホームディレクトリ以下にあるユーザー所有のディレクトリやファイルの所有者UIDも変更されます。
-U
-
指定したユーザーアカウントのロックを解除します。これにより、
/etc/shadow
ファイルで暗号化されたパスワードの前にある感嘆符が削除されます。詳しくは次のレッスンで解説します。
すべてのオプションのリストは、usermod
コマンドのマニュアルを参照してください。
Tip
|
ユーザーアカウントのログイン名を変更した場合( |
ユーザーアカウントの削除
ユーザーアカウントを削除したい場合は、userdel
コマンドを使用します。このコマンドは、アカウントデータベース(次のレッスンで説明します)を更新し、指定したユーザーに関わるすべてのエントリを削除します。-r
オプションを指定すると、ユーザーのホームディレクトリと、そこに含まれるすべての内容と、ユーザーのメールスプールも削除します。ホームディレクトリ以外の場所にあるファイルは、手動で検索して削除する必要があります。
# userdel -r michael
useradd
や usermod
と同様に、ユーザーアカウントを削除するにはroot権限が必要です。
グループの追加、変更、削除
グループを追加、変更、および削除するには、ユーザーの場合と同様にroot権限で groupadd
、groupmod
、groupdel
コマンドを使用します。developer
という名前の新しいグループを作成するには、次のコマンドを使用します:
# groupadd -g 1090 developer
このコマンドの -g
オプションには、作成するグループのGID指定します。
Warning
|
現在の主要なディストリビューションのほとんどは、User Private Group(UPG)と言って、ユーザーの作成時にユーザー名と同じ名前のグループ(所属メンバーは同名のユーザーのみ)を作成し、それをユーザーのプライマリグループとするポリシーを採用しています。このポリシーが有効となっている場合(後述)は、プライマリグループが自動的に作成されます。UPGが無効の場合は、ユーザーの作成に先立って、そのユーザーが所属するプライマリグループをあらかじめ作成しておく必要があります。 |
グループ名を developer
から web-developer
に変更すると共に、そのGIDを(1050に)変更するには、次のコマンドを使用します:
# groupmod -n web-developer -g 1050 developer
Tip
|
|
web-developer
グループを削除するには、次のコマンドを使用します:
# groupdel web-developer
いずれかのユーザーのプライマリグループに指定されているグループは、削除することができません。つまり、グループを削除する前にユーザーを削除するか、そのユーザーのプライマリグループを変更する必要があります。ユーザーを削除した場合と同様に、グループを削除しても、そのグループに属するファイルはそのままファイルシステムに残り、削除されたり別のグループに割り当てられたりすることはありません。
スケルトンディレクトリ
新しいユーザーを追加する時にそのホームディレクトリを作成することを指示する(-m
オプション)と、新しく作成されたホームディレクトリに、スケルトンディレクトリ(デフォルトでは /etc/skel
)からディレクトリとファイルがコピーされます。この背後にある考え方は単純で、システム管理者は、新しいユーザーのホームディレクトリに、所定のディレクトリとファイルを置きたいのです。したがって、新しいユーザーアカウントのホームディレクトリに自動的にコピーされるディレクトリやファイルをカスタマイズしたい場合は、スケルトンディレクトリの内容をカスタマイズします。
Tip
|
スケルトンディレクトリ内のすべてのファイルやディレクトリを一覧したい時は、 |
/etc/login.defs
ファイル
Linuxでは、ユーザやグループの作成を制御するパラメータが、/etc/login.defs
ファイルに格納されています。ここまでに説明してきたコマンドは,このファイルを参照してデフォルトの動作を決定しています.
このファイルに指定できる重要なパラメーターを以下に示します:
UID_MIN
とUID_MAX
-
新しい一般ユーザーに割り当てるユーザーIDの範囲。
GID_MIN
とGID_MAX
-
新しいグループに割り当てるグループIDの範囲。
CREATE_HOME
-
ユーザー作成時にそのホームディレクトリをデフォルトで作成することを指定します。
USERGROUPS_ENAB
-
User Private Group(UPG)と呼ばれる、ユーザー/グループ管理ポリシーを有効にします。すなわち、ユーザー作成時に同じ名前のグループを作成し、ユーザーを削除したときにそのプライマリグループに他のメンバーが居なければそのグループも削除します。
MAIL_DIR
-
メールスプールディレクトリ。
PASS_MAX_DAYS
-
あるパスワードを使用できる最大日数。(訳注: 以下、次のレッスンで解説しますが、既存のユーザーには影響しません。)
PASS_MIN_DAYS
-
次にパスワードを変更できるようになるまでの最小日数(訳注: パスワードを変更してすぐに前のパスワードに戻すことへの対策です)。
PASS_MIN_LEN
-
パスワードの長さの最小値。
PASS_WARN_AGE
-
パスワードの有効期限が切れる前に、変更を促す警告を表示する日数。
Tip
|
ユーザー/グループの管理ポリシーはディストリビューションによって異なります。複数のディストリビューションを混在して使用している場合などには、このファイルをチェックして管理ポリシーを確認しておくとよいでしょう。組織のポリシーに応じて、必要があれば変更して下さい。 |
passwd
コマンド
このコマンドは、主にユーザーのパスワードを変更するために使用します。前述のように、すべてのユーザーが自分のパスワードを変更できますが、rootだけが すべてのユーザー のパスワードを変更できます。passwd
コマンドにはSUIDビットが設定されている(所有者の実行可能フラグが s
)ので、ファイルの所有者(つまりroot)の権限で実行されます。そのため、すべてのユーザーが自分のパスワードを変更できるのです。
# ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 42096 mag 17 2015 /usr/bin/passwd
passwd
のオプションには、パスワードの有効期間など(パスワードエージングと呼びます)を制御するものがあります:
-d
-
ユーザーアカウントのパスワードを削除します(すなわちユーザーを無効にします)。
-e
-
ユーザーにパスワードの変更を強制します(ユーザー次にログインしたときに、パスワードの変更が求められます)。
-i
-
パスワードの有効期限が切れてから、アカウントが無効化されるまでの日数(その間はパスワードを更新できます)を指定します。
-l
-
ユーザーアカウントをロックします(
/etc/shadow
ファイルの暗号化されたパスワードの前に感嘆符を追加します)。 -n
-
次にパスワードを変更できるようになるまでの最小日数を指定します。
-S
-
指定したユーザーアカウントのパスワードの状態(ロックの有無、パスワードの有無など)を出力します
-u
-
ユーザーアカウントのロックを解除します(
/etc/shadow
ファイルのパスワードから感嘆符が削除されます)。 -x
-
パスワードの最大有効日数を指定します。
-w
-
パスワードの有効期限が切れる前に、パスワードの変更を促す警告を表示する日数を指定します。
Note
|
グループにもパスワードを設定することができ、 |
chage
コマンド
このコマンドは “change age” の略で、ユーザーのパスワードエージング情報を変更します。chage
コマンドの実行にはroot権限が必要ですが、一般ユーザーは -l
オプションで自分のアカウントのパスワードエージング情報を表示することができます。
chage
コマンドの主要なオプションは次のとおりです:
-d
-
ユーザーが最後にパスワードを変更した日付を変更します。
-E
-
ユーザーアカウントが無効化される日付を指定します。(日付は
YYYY-MM-DD
形式ないし1970年1月1日からの日数で指定します) -I
-
パスワードの有効期限が切れた後、ユーザーがパスワードを更新できる期間を日数で指定します(期間内に更新しないと、アカウントが無効になります)。
-m
-
ユーザーアカウントのパスワードの最小有効期間(パスワードを変更してから次に変更できるまでの日数)を指定します。
-M
-
ユーザーアカウントのパスワードの最大有効期間(日数)を指定します。
-W
-
パスワードが失効する前に、パスワードを変更を促す警告を表示する日数を指定します。
Note
|
訳注: パスワードの有効期間は、かつてパスワードの定期的な変更が推奨されていた頃の名残です。セキュリティ上、現在では定期的なパスワードの変更を強制することは非推奨となっています。 |
演習
-
以下のコマンドそれぞれの役割は何ですか?
usermod -L
passwd -u
chage -E
groupdel
useradd -s
groupadd -g
userdel -r
usermod -l
groupmod -n
useradd -m
-
以下に示す
passwd
コマンドに対応する、chage
コマンドは何ですか?passwd -n
passwd -x
passwd -w
passwd -i
passwd -S
-
前問におけるそれぞれのコマンドの働きを説明して下さい。
-
ユーザーアカウントをロックするコマンドは何ですか? また、そのロックを解除するコマンドは何ですか?
発展演習
-
groupadd
コマンドを使用して、administrators
グループとdevelopers
グループを作成してください。rootとして作業しているものとします。 -
前問でグループを作成したので、次のコマンドを実行します:
useradd -G administrators,developers kevin
/etc/login.defs
のCREATE_HOME
とUSERGROUPS_ENAB
が、yes
であるとします。このコマンドは何を行いますすか? -
designers
という名前の新しいグループを作成し、名前をweb-designers
に変更して、この新しいグループを ユーザーkevin
のセカンダリグループに追加して下さい。さらに、kevin
が属するすべてのグループとそのIDを表示して下さい。 -
kevin
のセカンダリグループからdevelopers
グループのみを削除して下さい。 -
ユーザー
kevin
のアカウントにパスワードを設定して下さい。 -
chage
コマンドを使用して、まずkevin
アカウントの有効期限を確認してから、2022年12月31日に変更して下さい。ユーザーアカウントの有効期限を変更するためのコマンドには、どのようなものがありますか? -
ユーザー
emma
という新しいユーザーをUID 1050で作成します。プライマリグループをadministrators
とし、セカンダリグループをdevelopers
とweb-designers
として下さい。PUGは無効であるとします。 -
emma
のログインシェルを/bin/sh
に変更して下さい。 -
emma
とkevin
のユーザーアカウント、ならびにadministrators
、developers
、web-designers
グループを削除して下さい。
まとめ
このレッスンでは、以下の事柄を学びました:
-
Linuxにおける、ユーザーとグループ管理の基礎知識
-
ユーザーを追加、変更、削除する方法
-
グループを追加、変更、削除する方法
-
スケルトンディレクトリの管理
-
ユーザーとグループの作成を制御するファイル(login.defs)の役割
-
ユーザーのパスワードを変更する方法
-
ユーザーアカウントのパスワードエージング情報を変更する方法
このレッスンでは、以下に示すファイルとコマンドを説明しました:
useradd
-
新しいユーザーアカウントを作成します。
usermod
-
ユーザーアカウントの属性を変更します。
userdel
-
ユーザーアカウントを削除します。
groupadd
-
新しいグループを作成します。
groupmod
-
グループの属性(グループ名、GID)を変更します。
groupdel
-
グループを削除します。
passwd
-
ユーザーのパスワードを変更したり、パスワードエージングを制御したりします。
chage
-
ユーザーのパスワードエージング情報を変更します。
/etc/skel
-
デフォルトのスケルトンディレクトリ。
/etc/login.defs
-
ユーザーとグループの作成を制御し、ユーザーアカウント属性のデフォルト値を保持するファイル。
演習の解答
-
以下のコマンドそれぞれの役割は何ですか?
usermod -L
ユーザーアカウントをロックします
passwd -u
ユーザーアカウントのロックを解除します
chage -E
ユーザーアカウントの有効期限を設定します
groupdel
グループを削除します
useradd -s
ログインシェルを指定して、ユーザーアカウントを作成します
groupadd -g
GIDを指定して、新しいグループを作成します
userdel -r
ユーザーアカウントと、そのホームディレクトリ、そこに含まれるファイル、メールスプールを削除します
usermod -l
ユーザーアカウントのログイン名を変更します
groupmod -n
グループの名前を変更します
useradd -m
ユーザーアカウントとそのホームディレクトリを作成します
-
以下に示す
passwd
コマンドに対応する、chage
コマンドは何ですか?passwd -n
chage -m
passwd -x
chage -M
passwd -w
chage -W
passwd -i
chage -I
passwd -S
chage -l
-
前問におけるそれぞれのコマンドの働きを説明して下さい。
passwd -n
コマンド(ないしchage -m
)は、パスワードの最小有効期間を設定します。passwd -x
コマンド(ないしchage -M
)は、パスワードの最大有効期間を設定します。passwd -w
コマンド(ないしchage -W
)は、パスワードの変更を促す警告を表示する日数を設定します。passwd -i
コマンド(ないしchage -I
)は、有効期間が切れたパスワードを更新できる日数を設定します。passwd -S
コマンド(ないしchage -l
)は、ユーザーアカウントのパスワードの状態を表示します。 -
ユーザーアカウントをロックするコマンドは何ですか? また、そのロックを解除するコマンドは何ですか?
ユーザーアカウントをロックするには、
usermod -L
、usermod --lock
、passwd -l
のいずれかのコマンドを使用します。逆にロックを解除するには、usermod -U
、usermod --unlock
、passwd -u
のいずれかを使用します。
発展演習の解答
-
groupadd
コマンドを使用して、administrators
グループとdevelopers
グループを作成してください。rootとして作業しているものします。# groupadd administrators # groupadd developers
-
前問でグループを作成したので、次のコマンドを実行します:
useradd -G administrators,developers kevin
/etc/login.defs
のCREATE_HOME
とUSERGROUPS_ENAB
が、yes
であるとします。このコマンドは何を行いますすか?このコマンドは、システムに
kevin
という名前の新しいユーザーを追加し、そのホームディレクトリ(CREATE_HOME
がyesに設定されているので -mオプションを省略できます)と、新しいグループkevin
をこのユーザーアカウントのプライマリグループとして(USERGROUPS_ENAB
がyesに設定されているため)作成します。最後に、スケルトンディレクトリに含まれるディレクトリとファイルを、kevin
のホームディレクトリにコピーします。 -
designers
という名前の新しいグループを作成し、名前をweb-designers
に変更して、この新しいグループをkevin
のセカンダリグループに追加して下さい。さらに、kevin
が属するすべてのグループとそのIDを表示して下さい。# groupadd designers # groupmod -n web-designers designers # usermod -a -G web-designers kevin # id kevin uid=1010(kevin) gid=1030(kevin) groups=1030(kevin),1028(administrators),1029(developers),1031(web-designers)
-
kevin
のセカンダリグループからdevelopers
グループのみを削除してください。# usermod -G administrators,web-designers kevin # id kevin uid=1010(kevin) gid=1030(kevin) groups=1030(kevin),1028(administrators),1031(web-designers)
usermod
コマンドには、1つのグループのみを削除するオプションがありません。そのため、ユーザーが属するすべてのセカンダリグループを再指定します。 -
ユーザー
kevin
のアカウントにパスワードを設定して下さい。# passwd kevin Changing password for user kevin. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
-
chage
コマンドを使用して、まず kevin アカウントの有効期限を確認してから、2022年12月31日に変更して下さい。ユーザーアカウントの有効期限を変更するためのコマンドには、どのようなものがありますか?# chage -l kevin | grep "Account expires" Account expires : never # chage -E 2022-12-31 kevin # chage -l kevin | grep "Account expires" Account expires : dec 31, 2022
usermod
コマンドの-e
オプションは、chage -E
と同じです。 -
emma
という名前の新しいユーザーをUID 1050で作成します。プライマリグループをadministrators
とし、セカンダリグループをdevelopers
とweb-designers
として下さい。PUGは無効であるとします。# useradd -u 1050 -g administrators -G developers,web-designers emma # id emma uid=1050(emma) gid=1028(administrators) groups=1028(administrators),1029(developers),1031(web-designers)
-
emma
のログインシェルを/bin/sh
に変更して下さい。# usermod -s /bin/sh emma
あるいは、
chsh
コマンド(CHange SHellの意)を使います。chsh
は一般ユーザーが自分のシェルを変更するためにも使えます。 -
emma
とkevin
のユーザーアカウント、ならびにadministrators
、developers
、web-designers
グループを削除して下さい。# userdel -r emma # userdel -r kevin # groupdel administrators # groupdel developers # groupdel web-designers