ユーザの追加・削除
Linuxの特徴の1つに『マルチユーザ』があります。今回はLinuxのユーザ管理について学びましょう。
ユーザアカウントの種類
Linuxのユーザアカウントは3種類に分類できます。
| 特権ユーザ | システム上のすべてのファイルや設定へのアクセス、変更、削除が可能な絶対的な権限を持つユーザです。スーパーユーザともいいます。”root”というアカウント名です。 |
| システムユーザ | システムについての権限は一般ユーザと同じですが、特定のサービスを実行するために作成されます。”apache”、”mysql”などがあります。 |
| 一般ユーザ | 原則として、自分のホームディレクトリ内のみファイル作成・読み取り・書き込みの権限を持ちます。システムの設定変更の権限は制限されています。 |
ユーザのグループへの所属
ユーザは、必ず1つ以上のグループに所属します。グループには2種類あります。
| プライマリグループ | ユーザ作成の際に割り当てられるグループです。Linuxでは、ユーザ毎にグループが作成されます。ユーザが新たにファイルやディレクトリを作成した場合、デフォルトでプライマリグループが所有グループとして設定されます。 |
| セカンダリグループ | ユーザはプライマリグループ以外のグループにも所属することが出来ます。これをセカンダリグループといいます。複数のセカンダリグループに属することも可能です。 |
ユーザの追加
ユーザを作成する場合、以下を設定することが出来ます。
| ユーザID | ユーザ作成時に必ず指定する必要があります。 ログインなどに使用する『アカウントの名前』です。英小文字・数字と”_”が使用可能、先頭は数字不可です。 文字数はディストリビューションやバージョンによって最大8~32文字と異なります。 |
| UID | 内部的にユーザを区別するための数値です。 rootは0、システムユーザは1~499、一般ユーザは500~です。 ユーザ作成時に明示的な指定も可能ですが、省略すると自動的に割り当てられます。 |
| 所属グループID | プライマリグループです。デフォルトでユーザと同名のグループが自動的に作成されます。 |
| GID | 内部的にグループを区別するための数値です。明示的な指定も可能ですが、省略すると自動的に割り当てられます。 |
| パスワード | ユーザログインのためのパスワードです。Linuxではユーザ作成時に同時に設定することは出来ません。 |
| パスワードの有効期限 | パスワードの有効期限です。 |
| ホームディレクトリ | ユーザのホームディレクトリです。 ユーザ作成時に自動的にディレクトリが作成されるわけではありませんので、別に手作業で作成する必要があります。 |
| シェル | ユーザが使用するシェル(ログイン時に最初に実行されるプログラム)です。 |
上記のいくつかはユーザ作成コマンドのオプションで指定しますが、別コマンドを使用する必要があるものもあります。
ユーザ作成コマンド
ユーザ作成コマンドは useradd です。実際にユーザを作成するには管理者権限が必要です。
書式
useradd オプション ユーザID
オプションには以下のものがあります。
| オプション | 意味 | 省略時 |
|---|---|---|
| -c | コメントを記述する | |
| -d | ホームディレクトリを指定する | /home/ユーザ名が指定される |
| -e | アカウントの有効期限を指定する | |
| -g | プライマリグループを指定する | ユーザと同名のグループが作成される |
| -m | ホームディレクトリを作成する | ホームディレクトリが作成されない |
| -s | シェルを指定する | デフォルトのシェルが指定される |
| -u | UIDを指定する | 自動的に設定される |
実行例1
tanaka というユーザを、すべてデフォルトの設定で作成してみましょう。
$ sudo useradd tanaka ↵
$(sudo実行時にパスワードを訊かれた場合には、現在作業・しているユーザのパスワードを入力する)
登録状況は /etc/passwd で確認することが出来ます。
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/user/sbin:/user/sbin/nologin
(途中略)
tanaka:x:1001:1001::/home/tanaka:/bin/sh/etc/passwdファイルは、1行に1ユーザの情報が記述されています。項目は”:”区切りで、
ユーザ名:パスワード:UID:GID:コメント:ホームディレクトリ:シェル
となっています。ただしパスワードはxとダミー表示され、実際には別のファイル(rootしか参照できない)に保存されています。
この例では、ユーザ tanakaの
UIDは1001
GIDも1001
ホームディレクトリは/home/tanaka
シェルは/bin/sh
となっていることが判ります。ただし、/home/tanakaは自動的には作成されていません。
実行例2
今度は、以下の設定でユーザを作成してみましょう。
| ユーザ名 | suzuki |
| シェル | /bin/bash |
| ホームディレクトリ | 作成 |
$ sudo useradd -s /bin/bash -m suzuki
$内容を確認してみましょう。
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/user/sbin:/user/sbin/nologin
(途中略)
tanaka:x:1001:1001::/home/tanaka:/bin/sh
suzuki:x:1002:1002::/home/suzuki:/bin/bashパスワード設定コマンド
useraddコマンドではパスワードを設定することが出来ません。パスワードの設定にはpasswdコマンドを使用します。
書式
passwd ユーザ名
パスワードはコマンドオプションで指定するのではなく、コマンドを実行すると対話的に訊いてきますので入力して下さい。
なお、passwdコマンドを一般ユーザ権限で実行すると自分自身のパスワードしか変更できません。作成した新規ユーザのパスワードを変更する場合は管理者権限(sudo)で実行します。
実行例
先ほど作成したユーザsuzukiにパスワードを登録してみましょう。
$ sudo passwd suzuki ↵
新しいパスワード: ←testpass と入力。エコーバックされない
正しくないパスワード:このパスワードは辞書チェックに失敗しました - 辞書の単語に基づいています
新しいパスワードを再入力して下さい: ←testpassと入力。エコーバックされない
passwd:パスワードは正しく更新されました
$passwdコマンドを実行すると『新しいパスワード』を訊いてくるので、設定したいパスワードを入力します。このとき、画面には一切入力した文字が表示されないので注意して下さい。
この例では testpass という既存の英単語の組み合わせにしたためエラーが出ていますが問題なく設定できます。
それでは新しく作成したユーザに変身してみましょう。ユーザを変更するには su コマンドを使用します。
$ su - suzuki
パスワード: ←testpassと入力
$ pwd
/home/suzukiプロンプトにユーザ名が表示される設定になっている場合は、suzukiに変化しているはずです。
ユーザの削除
ユーザを削除するには、userdelコマンドを使用します。
書式
userdel ユーザID
ホームディレクトリは自動的には削除されません。
練習
1.以下のユーザを作成し、/etc/passwd の該当部分を表示した画面のスクリーンショットを撮って提出しなさい。
| ユーザID | パスワード | シェル | プライマリグループ |
|---|---|---|---|
| arthur | 任意 | デフォルト | デフォルト |
| benjie | 任意 | /bin/bash | デフォルト |
| conrad | 任意 | /bin/bash | root |
| david | 任意 | /bin/nologin | デフォルト |
| edward | 任意 | /bin/bash | デフォルト |
2.ユーザedwardを削除し、/etc/passwd の該当部分を表示した画面のスクリーンショットを撮って提出しなさい。

コメント