グループ管理

はじめに

第31章はじめに

Linuxシステムでは、グループと呼ばれるユーザーの集合を形成し、そのメンバに複数の共通の目的を持たせることができます。そのために、特定のファイルとディレクトリを共有し、いくつかの共通の特権を維持します。これにより、システム上の他のユーザーとは分けられ、集合的な意味で世界（the world）と呼ばれる場合があります。グループの使用は、共同プロジェクトの時に非常に役立ちます。


学習目標
この章の終わりまでに、次のことができるようになります。

Linuxユーザーを1つ以上のグループに所属させることが有用である理由を説明できます。
groupadd、groupdel、groupmod、usermodなどのユーティリティを使用して、グループとそのメンバシップを作成、削除、操作できます。
ユーザー プライベート グループを説明できます。
グループ メンバシップの概念を説明できます。


グループ管理

グループとは
Linuxシステムでは、グループと呼ばれるユーザーの集合を形成し、そのメンバに複数の共通の目的を持たせることができます。そのために、特定のファイルとディレクトリを共有し、いくつかの共通の特権を維持します。これにより、システム上の他のユーザーとは分けられ、集合的な意味で世界（the world）と呼ばれる場合があります。グループの使用は、共同プロジェクトの時に非常に役立ちます。ユーザーは1つ以上のグループに属します。

グループは/etc/groupで定義されます。これは、ユーザー管理における/etc/passwdと同じ役割をグループに対して果たします。ファイルの各行は次のようになります。

groupname:password:GID:user1,user2,...

構文の内容は以下のとおりです。

groupnameはグループの名前です。
passwordは、パスワードです。/etc/gshadowが存在する場合のみ、グループ パスワードを設定できます。
GIDはグループ識別子です。0〜99の値はシステム グループ用です。100からGID_MIN（/etc/login.defsで定義され、通常はUID_MINと同じ）の間の値は、特別な値と見なされます。GID_MINを超える値はUPG（User Private Groups）用です
user1,user2,...は、グループのメンバであるユーザーをコンマ区切りしたリストです。このグループがユーザーのプリンシパル グループ（プライマリ グループ）である場合、ユーザーをここにリストする必要はありません。


グループ管理
グループ アカウントは、次のユーティリティで管理および保守できます。

groupadd：新しいグループを追加します。
groupmod：グループ情報を変更し、新しいユーザーを追加します。
groupdel：グループを削除します。
usermod：ユーザーのグループ メンバシップを管理・変更します。

これらのグループ操作ユーティリティは、/etc/groupと（存在する場合は）/etc/gshadowを変更します。rootのみが実行できます。例えば以下のように使います。

$ sudo groupadd -r -g 215 staff
$ sudo groupmod -g 101 blah
$ sudo groupdel newgroup
$ sudo usermod -G student,group1,group2 student

🚩
usermod -Gコマンドは十分注意して使ってください。引数のグループ リストは、変更するものだけでなく、完全なグループ リストを指定する必要があります。指定されていないグループは削除されます！ 安全に使用するには、新しいメンバを追加するときに、既存のグループ メンバシップを保持する-aオプションを使用する必要があります。


ユーザー プライベート グループ
Linuxは、ユーザー プライベート グループ（UPG）を機能を提供します。

UPGの背景にある考え方は、各ユーザーが自分のグループを持つことです。ただし、UPGは個人用であるとは限りません。/etc/groupの他の誰かのプライベート グループにメンバとして追加できます。

デフォルトでは、useraddで作成されたアカウントを持つユーザーは、プライマリGID = UIDを持ち、グループ名もユーザー名と同じです。

/etc/profileを見てもわかるように、UPGで作成されたすべてのユーザーのumaskは002に設定されます。したがって、この方式では、ユーザー ファイルはパーミッション664（rw-rw-r--）で、ディレクトリは775（rwxrwxr-x）で作成されます。umaskについては、次のセクションで説明します。


グループのメンバシップ
Linuxユーザーは、1つのプライマリ グループを持っています。これは/etc/passwdと/etc/groupに記載されています。また、ユーザーは0〜15個のセカンダリ グループに所属できます。

プライマリ グループのGIDは、ユーザーがファイルまたはディレクトリを作成する時に常に使用されます。それ以外のセカンダリ グループのメンバーシップは、ユーザーにパーミッションを追加で付与します。

グループのメンバシップは、次のコマンドのいずれかを実行することで識別できます。

$ groups [user1 user2 ...]
$ id -Gn [user1 user2 ...]

引数なしで実行すると、どちらのコマンドも現在のユーザーについての情報を表示します。デフォルト グループは、ディストリビューションによって異なる場合があることに注意してください。

CentOsの場合：

[student@CentOS7 ~]$ groups
student

Ubuntuの場合：

student@ubuntu:~$ groups
student adm cdrom sudo dip plugdev lpadmin sambashare libvirt


演習

課題 31.1:  グループ関係の作業

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

【【これ以降は橋本さんの訳を挿入】】

1.  Create two new user accounts (rockyandbullwinklein the below) and make sure they have home directories.

2.  Create two new groups,friends and bosses (with a GID of 490).  Look at/etc/group.  See what GID was given toeach new group.

3.  Add rocky to both new groups.Add bullwinkle to groupfriends.Look in /etc/group to see how it changed.

4.  Login as rocky. Create a directory called somedir and set the group ownership to bosses. (Using chgrp which will be discussed in the next session.)(You will probably need to add execute privileges for all onrocky’s home directory.)

5.  Login as bullwinkle and try to create a file in /home/rocky/somedir called somefile using the touch command.Can you do this? No, because of the group ownership and the chmod a+xon the directory.

6.  Add bullwinkle o the bosses group and try again.  Note you will have to log out and log back in again for the new group membership to be effective. do the following:

Solution 31.1

1.$ sudo useradd -m rocky $ sudo useradd -m bullwinkle $ sudo passwd rocky
Enter new UNIX password: Retype new UNIX password: passwd:
password updated successfully
$ sudo passwd bullwinkle
Enter new UNIX password: Retype new UNIX password: passwd:
password updated successfully
$ ls -l /home
total 12 drwxr-xr-x 2 bullwinkle bullwinkle 4096 Oct 30
09:39 bullwinkle drwxr-xr-x 2 rocky rocky 4096 Oct 30 09:39
rocky drwxr-xr-x 20 student student 4096 Oct 30 09:18 
student

2.$ sudo groupadd friends $ sudo groupadd -g 490 bosses $ grep
-e friends -e bosses /etc/group
friends:x:1003: bosses:x:490:

3.$ sudo usermod -G friends,bosses rocky $ sudo usermod -G
friends bullwinkle
$ grep -e rocky -e bullwinkle /etc/group
rocky:x:1001: bullwinkle:x:1002:
friends:x:1003:rocky,bullwinkle bosses:x:490:rocky
$ groups rocky bullwinkle
rocky : rocky friends bosses bullwinkle : bullwinkle friends

4.$ ssh rocky@localhost $ cd  ̃ $ mkdir somedir $ chgrp bosses
somedir $ ls -l
total 16 -rw-r--r-- 1 rocky rocky 8980 Oct 4 2013
examples.desktop drwxrwxr-x 2 rocky bosses 4096 Oct 30 09:53
somedir
$ chmod a+x .

5.$ ssh bullwinkle@localhost $ touch
/home/rocky/somedir/somefile
touch: cannot touch /home/rocky/somedir/somefile: Permission
denied
$ exit

6.$ sudo usermod -a -G bosses bullwinkle $ ssh
bullwinkle@localhost $ touch
/home/rocky/somedir/somefile $ ls -al
/home/rocky/somedir
(note ownership of files)


知識チェック

「第31章 - グループ管理」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。

クイズ開始

問題 31.1
ユーザーを既存のグループに追加する正しい方法は次のうちどれですか？ 当てはまるものをすべて選択してください。

A. vigrを使用して/etc/groupを編集し、最後のフィールドのユーザー名の後ろにカンマを追加して新しいユーザー名を追加します。
B. useradd -G <group name>を使用して、新しいユーザーを作成します。
C. 既存の新規ユーザーに対して、usermod -G <group name>を使用します。
D. groups -add <group-name> userを使います。


