3) グループ管理について
複数のユーザーが共通作業を効率良く行えるようにユーザーをグルーピングし、そのグループ毎に適切なアクセス制御を行うための「グループ管理」について解説します。
インターネットリサーチ・コンサルティング・企画、ウェブ翻訳から、Web制作、システム開発までオープンソース・ネットワークビジネスを提供
グループ管理について
UNIX系OSでは、グループ管理とアクセス権限を正しく設定することで、特定のファイルまたはディレクトリーを、複数のユーザーで共有することができます。
UNIX系OSでは、スーパーユーザー権限でグループおよびグループ所属メンバーを管理します。
グループ管理方式について
通常、UNIX系OSのグループは、/etc/groupのようなグループファイルにより管理されています。
グループファイルはサーバー/システム毎に設定されており、他のサーバー/システムから利用することはできません。
一方、NIS、LDAP、Active Directoryのようなディレクトリサービスにより、複数のサーバー/システム間で同一のユーザー情報およびグループ情報を共有し、ユーザーを一元管理をすることができます。
ここでは、UNIX系OSでは一般的な、/etc/groupによるグループ管理方法について解説します。
グループ管理内容
グループ情報は/etc/groupで、グループ所属メンバーは/etc/passwdおよび/etc/groupで管理されています。
ユーザーの所属グループの内、/etc/passwdで指定されたグループを「主グループ」、/etc/groupで指定されたグループを「補助グループ」と言い、全てのユーザーは必ずいずれかのグループ (主グループ) に所属します。
またユーザー情報と同様、グループにパスワードが設定できます。グループのパスワード情報は/etc/gshadowで管理されますが、あまり使用されない (*1) ため、ここではグループパスワードおよび/etc/gshadowに関する説明は省略します。
グループファイルにて管理されている主なグループ情報は、以下の通りです。
| 管理ファイル | 管理内容 |
|---|---|
| /etc/group | グループ名 |
| グループID | |
| グループに所属するユーザー名 (複数指定の場合、カンマ区切りで指定する) |
(*1) グループパスワードを使用して、newgrpコマンドやsgコマンドによりログイン中のユーザーのグループ権限が変更するといった用途に限定されます。
グループ管理コマンド
グループを管理するには、専用の以下グループ管理コマンドを用います。
これらはスーパーユーザー権限にて実行可能です。
- groupadd (グループ新規作成)
- groupdel (グループ削除)
- groupmod (グループ管理情報変更)
- vigr (/etc/groupファイル編集)
また、/etc/groupファイルを直接編集することでグループ情報が変更できますが、複数人で同時に編集するとファイルが壊れる可能性があるため、注意する必要があります。
なお、vigrコマンドにより/etc/groupを編集する場合、複数人で同時に編集することができないように書込ロックが掛かります。
グループメンバー管理について
グループメンバーは/etc/passwdおよび/etc/groupで管理され、/etc/passwdに各ユーザーの主グループ設定が、一方、/etc/groupに補助グループ設定が保存されます。
所属する主グループ・補助グループは、usermodコマンドでユーザー毎に設定可能ですが、所属する補助グループは、設定変更の度に全て指定する必要があります。
そのため、/etc/groupファイル編集による管理の方が便利な場合が多くあります。
例えば以下の2つのコマンドを順次実行した場合、ユーザー「user1」は最終的に「group2」「group3」「group4」に所属することとなり、「group1」には1つ目のコマンド実行時から2つ目のコマンド実行時まで所属し、最終的に「group1」のグループメンバーから削除されます。
# usermod -G group1,group2,group3 user1
# usermod -G group2,group3,group4 user1
アクセス権限について
以上、グループ設定を適切に行い、ファイル/ディレクトリーのアクセス権限を適切に設定することで、同一のファイル/ディレクトリーをグループメンバーで共有することができるようになります。
次回は、ファイル/ディレクトリー毎にユーザーやグループに対してアクセス権限を設定することによる、セキュリティーを保つための「パーミッション」の設定方法について解説します。


