
目次
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ファイルの内容を変更すれば、変更した内容でコピーされ、ファイルやディレクトリを新たに作成すれば、それもコピーされます。
ただし、ユーザを新規作成する場合に限りますので、注意が必要です。