ユーザーの種類
Linuxはマルチユーザーシステムといって複数のユーザーで利用できるようになっています。ユーザーごとにアクセスできるファイルやディレクトリなどを設定できます。
ユーザーには普通のユーザー「一般ユーザー」と特別な「rootユーザー」「システムユーザー」の3種類があります。
- 一般ユーザー
- rootユーザー
- システムユーザー
rootユーザーはシステムの管理者であり、最高の権限を持っています。一般ユーザーはrootユーザーと比べて低い権限であり、rootユーザーが管理するディレクトリや設定を変更することはできません。変更するにはrootユーザーに切り替えるか権限を与えたり、sudoコマンドを利用する必要があります。
システムユーザーはapacheなどのアプリケーションを実行する特殊なユーザで、一般ユーザーのように人がログインで利用することはできません。
ユーザーの確認
ユーザーの確認は「/etc/passwd」のファイルを閲覧すればできます。
例えば「cat /etc/passwd」で確認できます。
出力は「user:x:1001:1001::/home/user: /bin/bash (ユーザー:password:ユーザーID:グループID:(コメント):ホームディレクトリ:シェル)
パスワードは通常xになっていて隠されています。
このパスワードを確認したい場合は「/etc/shadow」を確認します。しかし、ここで確認できるパスワードはシャドウパスワードと言って暗号化されています。これは入力されたパスワードをもとに強力なSHA-512というハッシュ関数によって生成されたハッシュ値です。このハッシュ値から復号化して元のパスワードを得ることはできません。
パスワードがわからないのにどうやって確認しているか?というとハッシュ値同士を確認しています。もとの平文が同じであれば、同じハッシュ関数で暗号化した結果は同じになります。つまり、パスワードの確認は入力された値をハッシュ関数によって暗号化し、ハッシュ値が一致するかどうかで確認しています。
ユーザーの追加
ユーザーの追加は「useradd」コマンドで行います。
[# useradd newuser]
で追加できます。オプションは
- -e 2021-01-01:アカウントの失効日を指定
- -M:ホームディレクトリを作成しない
- -g groupname:メイングループへの追加
- -G groupname:サブグループへの追加
「/etc/default/useradd」で設定しなければ一般ユーザーを追加するとホームディレクトリ(/home)にユーザーのディレクトリが作成されます。
ユーザーを設定したら、パスワードを設定します。パスワードは[# passwd username]を実行するとパスワードを求められるので入力するとパスワードも設定できます。
ユーザーの削除
ユーザーの削除は「userdel」で行います。
「userdel username」でユーザーの削除を行います。
グループの設定
ユーザだけでなくグループの設定ができます。グループにはメイングループとサブグループの2つがあります。ユーザーはこの2つのグループがあり、メイングループは必ず設定する必要があります。グループを指定しない場合、ユーザーを作成すると同じ名前のグループが作成され、所属します。
ファイルやディレクトリへのアクセスはユーザーごとグループごとに設定できます。
グループの作成は
「groupadd group」
で加えます。作成したユーザをグループに加える場合はユーザーを追加したときに指定するか、usermodコマンドでグループに所属させます。
「usermod -G subgroup」でサブグループを設定、サブグループは複数設定できるのでグループを追加設定したい場合は「usermod -aG subgroup」のようにaオプションをいれます。メイングループへの追加は-gで行います。
グループの確認と作成
グループの一覧はgroupファイルを見れば確認できます。
$ cat /etc/group
root:x:0:
daemon:x:1:
komeyan:x:1000:
docker:x:115:
eigyo:x:1002:
testusr:x:1001:
ユーザーの所属するグループはgroupsコマンドで確認できます。
$ groups testusr
testusr : testusr →testuserはtestuserのグループに所属
グループの作成
グループを作成するにはgroupaddコマンドを使います。
$ groupadd グループ名
グループの削除はgroupdelコマンドを使います。
$ groupdel グループ名
ファイルの所有者とグループの変更
ファイルを作成すると所有者とグループが設定されます。ファイル所有者やグループを表示するには ls -lコマンドで表示することができます。
$ ls -l
total 0
-rw-r--r-- 1 root root 29 Jul 24 09:36 2file
→ root:所有者 root:グループ
ファイルの所有者を変更するにはchownコマンドを使います。
$ sudo chown komeyan 2file
$ ls -l
total 0
-rw-r--r-- 1 komeyan root 29 Jul 24 09:36 2file
→所有者rootをkomeyanに変更
グループを変更するにはchgrpで変更します。
$ chgrp komeyan 2file
komeyan@DESKTOP-R3EPJBD:~/test$ ls -l
total 0
-rw-r--r-- 1 komeyan komeyan 29 Jul 24 09:36 2file
所有者とグループを同時に変更するにはchownコマンドを使います。chown 所有者.グループ ファイル名 のように指定します。
$ ls -l
-rw-r--r-- 1 root root 28 Jul 24 12:55 3file.txt
$ sudo chown komeyan.komeyan 3file.txt
komeyan@DESKTOP-R3EPJBD:~/test$ ls -l
-rw-r--r-- 1 komeyan komeyan 28 Jul 24 12:55 3file.txt