9.2 ユーザアカウント
Linux Essentials Online Text | 2021/07/27

Linuxシステムでは、メモリやファイルなどの様々な資源を利用するためにユーザという最小単位で権限を定義できます。前述した「root」もユーザの1つです。このユーザという単位は、インストール時から用意されているユーザに加え、システム管理者が必要に応じてユーザを定義できます。

ユーザのアカウントは /etc/passwdファイルに定義されていますが、実際にユーザを追加する場合は、/etc/passwdファイルをエディタで直接編集せずuseradd コマンドを用います。ちなみに、ユーザの定義変更はusermodコマンド、ユーザの削除はuserdel コマンドを用います。

ユーザの作成(useradd)

新しくユーザを作成するにはuseraddコマンドを使います。同じ機能を持つ「adduser」というコマンドもあります。

書式:

useradd [オプション] ユーザ名

主なオプション:

-g グループ名プライマリグループ名を指定します。デフォルトはユーザ名。
-G グループ名セカンダリグループを指定します。デフォルトは無し。
-d ディレクトリホームディレクトリを指定します。デフォルトは/home/ユーザ名
-s シェル シェルを指定します。デフォルトは/bin/bash。使用しない場合はnologinを指定する。
-u ユーザIDユーザID番号を指定します。指定がない場合は1000から順番に付与。
-c コメントコメント(文字列)を指定します。デフォルトは無し。
-D新規ユーザ作成時の初期値を表示します。

ユーザにはユーザIDと呼ばれる数字を割り振られます。一般ユーザのユーザID(後述するグループIDも)は、指定しない場合は1000番から順番に付与されます。最初から利用ユーザ情報がある程度決まっている場合は、予め計画的に設定しておくと管理しやすくなります。

ちなみに、rootユーザのユーザIDは「0」に決まっており、1~999までは、システムユーザが使用します。

<実習: ユーザの作成>

ユーザID番号が2001のユーザが/etc/passwdファイルに登録されているか調べます。登録されていないことを確認し、usersグループに所属するユーザIDが2001のhogehogeユーザを作ります。(root権限で実行して下さい。)

# grep 2001 /etc/passwd
# useradd -g users -u 2001 hogehoge
# grep hogehoge /etc/passwd
hogehoge:x:2001:100::/home/hogehoge:/bin/bash

 このコマンドにはオプションが多数ありますが、オプションを全く使わなくても作成は可能です。オプションを指定しない場合は、全てデフォルト値が適用されます。

ユーザの削除(userdel)

ユーザを削除するにはuserdel コマンドを使います。

書式:

userdel [オプション] ユーザ名

主なオプション:

-r対象ユーザのホームディレクトリとメールスプールも同時に削除する。

<実習: ユーザアカウントの削除>

hogehogeユーザを削除します。(root権限で実行して下さい。)

# grep hogehoge /etc/passwd
hogehoge:x:2001:100:/home/hogehoge:/bin/bash
# userdel hogehoge
# grep hogehoge /etc/passwd
#

「-r」オプションを使用しない場合、ユーザは削除されてログインできなくなりますが、/homeの配下にあるユーザディレクトリは削除されません。今後再利用がある場合や、対象ユーザが使用したデータが必要な場合は「-r」オプションを使わずに削除します。

ユーザ情報ファイル (/etc/passwd)

ユーザの情報は /etc/passwd ファイル(パスワードファイル)に下記の並びで保存されます。

【各項目の説明】
account:password:UID:GID:GECOS:directory:shell

account		:システム上のユーザ名。大文字を含まないようにする。
password		:以前は暗号化されたパスワードが入っていました。現在は 'x' が入ります。
UID			:ユーザ ID 番号。
GID			:ユーザが属するプライマリグループ ID 番号。
GECOS		:ユーザ名前またはコメントのフィールド
directory		:ユーザの $HOME ディレクトリ。
shell			:ログイン時に起動されるユーザのコマンドインタプリタ

従来は /etc/passwd ファイル(パスワードファイル)に暗号化されたパスワードを記述していましたが、現在ではセキュリティを考慮してシャドウファイルにパスワードを記述するようになっています。また、/etc/passwd ファイル(パスワードファイル)はエディタで直接編集せず、useraddコマンドなどのコマンドを使って操作することが推奨されます。

ホームディレクトリのデフォルトファイル(/etc/skel)

ユーザアカウントを作成すると、作成したユーザのホームディレクトリも同時に生成されます。この時、作成したユーザに作成しておきたいディレクトリや、配布したいファイルがある時、作成するたびにコピーしていては手間です。このような場合、/etc/skelというディレクトリにディレクトリを作成したり、ファイルを置いておくことで解決することができます。

/etc/skelはユーザアカウントを作成した際、ホームディレクトリを作成するためのコピー元となります。
実際に、/etc/skelディレクトリをlsコマンドで見てみると、3つの隠しファイルが配置されています。

# ls -lA /etc/skel
合計 12
-rw-r--r--. 1 root root  18  4月  1 11:17 .bash_logout
-rw-r--r--. 1 root root 193  4月  1 11:17 .bash_profile
-rw-r--r--. 1 root root 231  4月  1 11:17 .bashrc

ユーザアカウントを作成すると、ホームディレクトリが生成されますが、その際上記3つのファイルがコピーされ、配置される、ということです。

そのため、既存の3ファイルの内容を変更すれば、変更した内容でコピーされ、ファイルやディレクトリを新たに作成すれば、それもコピーされます。
ただし、ユーザを新規作成する場合に限りますので、注意が必要です。

PAGE TOP