Linux標準教科書 第7章(v304対応)

この記事はアフィリエイト広告を利用しています。

管理者の仕事

7.1 グループとユーザ

Linux を利用するにはユーザアカウントが必要です。任意のユーザでログインすると、Linux を利用することができます。グループとユーザを適切に設定することで、ファイルやディレクトリ、任意のプログラムやシェルスクリプトなどを必要なユーザにのみ参照・編集する権限や実行する権限を与えることができます。グループとユーザを作成・変更・削除するコマンドは管理コマンドなので、管理者である root ユーザで実行する必要があります。

7.1.1 ユーザ
インストール時から用意されているユーザに加え、システム管理者が必要に応じてユーザを定義できます。ユーザの定義は /etc/passwd ファイルに記述します。また直接編集する代わりに、useradd コマンドで新しいユーザを追加し、 usermod コマンドでユーザの定義を変更し、userdel でユーザを削除することが推奨されています。

7.1.2 ユーザの作成

新しくユーザを作成するには useradd コマンドを使います。ユーザには数字であるユーザ ID を 割り振ります。ユーザは必ずグループに所属します。作成したユーザをログインユーザとして使用 する場合は、後述する passwd コマンドにてパスワードを登録する必要があります。

書式:useradd ユーザ名

実習: ユーザの作成
ユーザを作成したあと、ユーザが作成できたか home ディレクトリを確認します。

# useradd owl
(ユーザを作成)
# ls /home/
owl
(home ディレクトリを確認)

実習: ユーザ ID を指定したユーザの作成
ユーザ ID を指定してユーザを作成します。ユーザ ID 番号が 1001 のユーザが /etc/passwd ファイルに登録されているか調べます。当てはまる行がなけれユーザ ID は未登録ですが下記の通りありましたのでユーザ ID が 1002 の penguin ユーザを作ります。grep(4.5参照) コマンドで調べてください。

# grep 1001 /etc/passwd
owl:x:1001:1001::/home/owl:/bin/bash
# useradd -g users -u 1002 penguin
(ユーザを作成)
# grep penguin /etc/passwd
penguin:x:1002:100::/home/penguin:/bin/bash
(作成されたユーザを表示)

7.1.3 ユーザアカウントの変更
ユーザアカウントを変更するには usrmod コマンドを使います。オプションは以下の通りです。
-c   コメント(文字列)を変更します。
-g プライマリグループ名を変更します。 /etc/group ファイルで定義したグループ名です。
-G 補助グループ名を変更します。
-l 既存のユーザ名を変更します。
-u ユーザ ID 番号を変更します。

実習: ユーザアカウントのコメントの変更
penguin ユーザのコメントを調べてから、コメントを指定します。

# grep penguin /etc/passwd
penguin:x:1002:100::/home/penguin:/bin/bash
# usermod -c “LPI-Japan Certification” penguin
# grep penguin /etc/passwd
penguin:x:1002:100:LPI-Japan Certification:/home/penguin:/bin/bash

7.1.4 ユーザの削除
ユーザを削除するには userdel コマンドを使います。オプション -r でホームディレクトリを削除します。

実習: ユーザアカウントの削除
penguin ユーザの情報を表示してから、penguin ユーザを削除します。penguin ユーザが登録されていないことを確認して下さい。

# grep penguin /etc/passwd
penguin:x:1002:100:LPI-Japan Certification:/home/penguin:/bin/bash
# userdel penguin
# grep penguin /etc/passwd
#

7.1.5 グループ
システム管理者が必要に応じてグループを定義できます。グループの定義は /etc/group ファイルに記述します。Linux では /etc/group ファイルをエディタで直接編集する代わりに、 groupadd コマンドで新しいグループを追加し、groupmod コマンドでグループの定義を変更し、groupdel コマンドでグループを削除することが推奨されています。

7.1.6 グループの作成
groupadd コマンドで新しいグループを作成します。オプションの -g で数字のグループ ID を割り振ります。
実習: 新しく自分が使うグループの作成
グループID1001 が /etc/group ファイルに登録されいるが調べます。登録されていればグループ ID1002 の Linuc グループを追加します。 /etc/group ファイルに Linuc グループが作成されたか grep コマンドで調べて下さい。

# grep 1001 /etc/group
owl:x:1001:
# groupadd -g 1002 Linuc
# grep Linuc /etc/group
Linuc:x:1002:

7.1.7 グループの登録情報の変更
グループの定義を変更するには groupmod コマンドを使います。オプション
-n 既存のグループ名を変更します。
-g 既存のグループ ID を変更します。100未満のグループ ID は指定できません。

# groupadd -g 1100                                     dolphinグループを作ります
# grep dolphin /etc/group
dolphin:x:1100:
# groupmod -n penguin dolphin                    dolphinグループをpenguinグループ名に変更
# groupmod -g 777 penguin                         penguinグループIDを777に変更
# grep penguin /etc/group
penguin:x:777:

実習: 登録したグループ名の変更
Linuc グループの情報を表示します。Linuc グループの名前を Linux に変更し、Linux グループの情報を確認して下さい。

# grep Linuc /etc/group
Linuc:x:1002:
# groupmod -n Linux Linuc
# grep Linux /etc/group
Linux:x:1002:

7.1.8 グループを削除
グループを削除するには groupdel コマンドを使います。groupdel コマンドでは登録されているグループの情報を削除します。ユーザが所属していないグループのみ削除できます。

実習: 登録したユーザの削除
Linux グループを削除します。Linux グループが削除されていることを確認して下さい。

# grep owl /etc/group
owl:x:1001:
# groupmod -g 1200 owl
# grep 1001 /etc/group
# grep Linux /etc/group
Linux:x:1002:
# groupdel Linux
# grep Linux /etc/group
#

7.2 パスワードとパスワードファイル

/etc/grop     グループの定義
/etc/passwd   ユーザの定義(情報)
/etc/shadow   パスワードは暗号化されて記録されます。

7.2.1 パスワードファイル( /etc/passwd )
ユーザの情報は /etc/passwd ファイル(パスワードファイル)に保存され、1行に1ユーザの情報を : で区切って記述します。

account:password:UID:GID:GECOS:directory:shell

GECOS = General Electric Comprehensive Operating System

従来はパスワードファイルに暗号化されたパスワードを記述していましたが、多くのディストリ ビューションはセキュリティを考慮してシャドウファイルにパスワードを記述しています。パス ワードファイルはエディタで直接編集するべきではありません。useradd コマンドなどのコマンド を使って操作することが推奨されます。


7.2.2 グループファイル( /etc/group )
グループの情報は /etc/group ファイル(グループファイル)に保存され、1行に1グループの情報を : で区切って記述します。グループファイルはエディタで直接編集するべきではありません。groupadd コマンドを使って操作することが推奨されます。

group_name:password:GID:user_list


7.2.3 パスワード
ユーザの権限を使うにはユーザ名とパスワードを使って認証します。作成したユーザはパスワードを登録するとログインできるようになります。初めてパスワードを変換するにはシステムの管理のため root ユーザ(スーパーユーザ)である必要があります。

実習: パスワードの設定
passwd         現在ログインしているユーザのパスワードの変更
passwd [ユーザ名]     ユーザ名を指定してパスワードの変

# grep penguin /etc/passwd
# useradd penguin
useradd: グループ penguin は存在します。このユーザをそのグループへ追加するには -g を用いてください。
# useradd -g 777 penguin
useradd: 警告: ホームディレクトリが既に存在します。
skel ディレクトリからのコピーは行いません。
メールボックスファイルを作成します: ファイルが存在します
# grep penguin /etc/group
penguin:x:777:
# grep penguin /etc/passwd
penguin:x:1002:777::/home/penguin:/bin/bash
# passwd penguin
ユーザー penguin のパスワードを変更。
新しいパスワード:
よくないパスワード: このパスワードは 8 未満の文字列です。
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
# exit
ログアウト
$ su – penguin
パスワード:
[penguin@localhost ~]$

7.2.4 シャドウファイル( /etc/shadow )
ユーザのパスワードはパスワードファイルではなく、シャドウファイル( /etc/shadow )に保存されます。シャドウファイルに登録された1つのユーザ(1行)は下記のようになります。

account:password:last_changed:may_be_changed:must_be_changed:warned:expires:disabled:reserved

7.3 用意されているユーザとグループ

Linux はインストールしてすぐにそのシステムを利用できるように、ユーザとそのユーザが所属するグループが用意されています。

ユーザプライベートグループ
useradd コマンドにおいて、グループ情報を省略して(オプションをつけない)ユーザを作成すると、作成されたユーザが所属が所属するグループはユーザ名と同様の名前のグループに所属します。Linux システムにおいては、そのユーザのみがファイルを修正する事ができます。他のユーザは修正が出来ませんので、意識する事なくディレクトリを保護する事が出来ます。

# useradd owl2
# grep owl2 /etc/passwd
owl2:x:1003:1003::/home/owl2:/bin/bash
# grep 1003 /etc/group
owl2:x:1003:
#

スケルトンディレクトリ
useradd コマンドでユーザを作成すると、ユーザのホームディレクトリに自動的にファイルが作成されています。これは、/etc/skel ディレクトリに予めセットされたファイル群が useradd コマンドの作成時に、自動的にユーザのホームディレクトリにコピーされて起こります。ユーザに配布させたいデータ(主にプロファイル)がある場合は、/etc/skel ディレクトリ配下にファイルを用意しておいて下さい。ユーザ情報を管理しているファイル( /etc/passwd )を手動で変更した場合は /etc/skel のデータはコピーされません。

# useradd hogehoge
# ls -la /home/hogehoge
合計 12
drwx—— 2 hogehoge hogehoge 59 12月 24 13:01 .
drwxr-xr-x. 7 root root 70 12月 24 13:01 ..
-rw-r–r– 1 hogehoge hogehoge 18 3月 5 2015 .bash_logout
-rw-r–r– 1 hogehoge hogehoge 193 3月 5 2015 .bash_profile
-rw-r–r– 1 hogehoge hogehoge 231 3月 5 2015 .bashrc

schoo LPIC/LinuC (レベル1)試験対策 第25回 より引用

7.3.1 一般のユーザとグループ
Linux にログインするにはアカウントが必要です。アカウントを作成するとユーザ名と同様の名前グループが作られ、ユーザはそのユーザグループに所属しているとシステムに登録されます。グループは複数のユーザをまとめるためにあります。個別のユーザを所属部署などの単位でグループ化する事ができグループを使うことでシステム上にあるディレクトリのアクセス権を設定して、特定のグループに属しているユーザのみの root ユーザになる事ができるような運用が可能になります。

7.3.2 root ユーザ
root ユーザはシステムの設定の変更や、プログラムのインストールや削除、ユーザを作成・削除する事ができる、利用に制限がない特別なユーザです。root ユーザはアクセス権に関係なく全てのユーザのディレクトリへのアクセス、コンテンツの読み書きが行える点で一般ユーザとは異なります。

7.3.3 su コマンド
su コマンドは一時的に他のユーザになるためのコマンドです。オプションをつけない場合はカレントディレクトリを変更せずにroot ユーザでログインします。カレントディレクトリを root のホームディレクトリに変更してログインするには「 su – 」または「 su – root 」と実行する事でカレントディレクトリを変更した上で root ユーザでログインできます。 su – user(指定したユーザになる事ができます)

実習: root ユーザになる su コマンドの実行
ユーザ権限では見られないログファイルを root 権限になると閲覧できるので確認してみましょう。

$ cat /var/log/messages
cat: /var/log/messages: 許可がありません
$ ls -l /var/log/messages
-rw——- 1 root root 11642 12月 24 13:01 /var/log/messages
$ id
uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant)
$ su –
パスワード:
最終ログイン: 2018/12/24 (月) 12:52:54 CET日時 pts/0
# pwd
/root
# cat /var/log/
Dec 23 04:44:01 localhost rsyslogd: [origin software=”rsyslogd” swVersion=”7.4.7″ x-pid=”583″ x-info=”http://www.rsyslog.com”] rsyslogd was HUPed
Dec 23 05:01:01 localhost systemd: Starting Session 10 of user root.
Dec 23 05:01:01 localhost systemd: Started Session 10 of user root.
Dec 23 06:01:01 localhost systemd: Created slice user-0.slice.
(以下略)

7.3.4 root ユーザでコマンドを実行する sudo コマンド

sudo コマンドを使えば、スーパーユーザ( root )権限でコマンドを実行できます。普段作業する時はユーザ権限で行い、必要に応じて sudo を使いコマンドを実行することで、 su コマンドでユーザを root に切り替えることなく root 権限が必要な設定やプログラムを実行する事ができます。 -u オプションをつけて sudo コマンドを実行すると任意のユーザでコマンドを実行できます。 sudo コマンドを実行した場合は root 権限でコマンドを実行できます。CentOS では初期設定のままでは sudo コマンドは利用できません。wheel グループというスーパーユーザ( root )権限を持つグループに登録する必要があります。

実習: 一般ユーザから管理コマンドの実行
sudo を使いたい penguin ユーザを wheel グループの所属にします。visudo コマンドで /etc/sudoers ファイルを編集して wheel グループの定義を有効にします。su コマンドで penguin ユーザに以降してから sudo コマンドを試して下さい。

$ su –
パスワード:
# grep penguin /etc/group
penguin:x:777:
# grep penguin /etc/passwd
penguin:x:1002:777::/home/penguin:/bin/bash
# grep 10 /etc/group
wheel:x:10:
users:x:100:
vagrant:x:1000:vagrant
owl2:x:1003:
hogehoge:x:1004:

vigr で wheel グループにユーザが追加されたか確認

# vigr
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:postfix
man:x:15:

wheel グループを有効に設定

# visudo
## Allows people in group wheel to run all commands
%wheel    ALL=(ALL)    ALL

# のコメントを外します。:wq! で終了

$ sudo visudo
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for penguin:

wheel グループに所属するユーザが sudo コマンドを実行した場合、パスワードを聞かれる事なくコマンドを実行できるようになります。この設定はデフォルトでは無効化されています。# でコメントして下さい。

# %wheel      ALL=(ALL)      NOPASSWD: ALL

7.4 章末テスト

(1)useradd で user を作りましたが、ログインする事ができません。ログインできるようにするには何が必要か答えなさい。

(2)ユーザ user2 を削除するコマンドを答えなさい。

(3)グループ penguin を作成する場合のコマンドを答えなさい。

(4)すでに作成済みのユーザ penguin のパスワードを変更する場合のコマンドを答えなさい。

(5)su コマンドに – オプションをつけない場合と付ける場合の違いは何か、答えなさい。

linux標準教科書より抜粋

テキストと問題集の購入は下記の画像をクリックして下さい。

認定テキストKindle版はこちらから

問題集Kindle版はこちらから

章末テスト解答

(1)# passwd でパスワード設定
(2) userdel user2
(3)groupadd penguin
(4)passwd penguin
(5)- オプションを付けないとカレントディレクトリを変更しないで root でログインする。- オプションを付けると root ホームディレクトリにログインする。
※環境変数を読み込むか、読み込まないかの違いがある。(第9章で解説)

$ su –
パスワード:
# id
uid=0(root) gid=0(root) groups=0(root)
# pwd
/root
# env | less

HOME=/root  で環境変数を読み込んでいるのがわかる

SHLVL=1
HOME=/root
LOGNAME=root

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください