/etc/group はローカルのグループレコードを保存します。グループ名を数値 GID に対応付け、明示的なメンバーを列挙することで、複数アカウントが共有するアクセス制御を支えます。
ユーザー管理 · レッスン 5
/etc/group
ローカルのグループレコードが名前を GID に対応付け、補助メンバーを列挙する仕組みを学びます。
ローカルグループと解決済みグループ
このファイルは、グループ情報源の一つにすぎません。NSS はローカルファイル、ディレクトリサービスなど、設定されたデータベースからグループを解決できます。ローカルレコードは次のように表示します。
$ cat /etc/group
解決済みグループデータベースは getent で問い合わせます。
$ getent group
$ getent group developers
グループ一覧は内部のアカウント名や役割名を開示する場合があるため、共有前に出力を確認してください。
NSS が解決するグループデータベースを問い合わせるコマンドはどれですか?
4個のフィールドを読む
ローカルレコードには、コロンで区切られた4個のフィールドがあります。
developers:x:1500:alice,bob
- グループ名:
developers。 - パスワードフィールド: 一般に
x、*などのプレースホルダー。保護されたグループパスワードデータは/etc/gshadowに保存できます。 - GID: 数値のグループ識別情報。この例では
1500。 - メンバー一覧: コンマ区切りの明示的なメンバー名。この例では
aliceとbob。
グループパスワードは、一部の構成で newgrp などが使う従来の機能です。sudo の認可を与える通常の仕組みではなく、フィールドの手動編集で導入すべきでもありません。
developers:x:1500:alice,bob で GID を含むフィールドはどれですか?
ローカルグループレコードで、明示的なメンバー名はどのように表されますか?
プライマリグループ所属を考慮する
/etc/group のメンバー一覧には通常、passwd レコードでその GID をプライマリグループとして指定しているユーザーを重ねて記録しません。そのため、第4フィールドに名前がなくても、そのユーザーがグループメンバーである場合があります。
たとえば、Alice の passwd レコードでプライマリ GID が1500なら、ローカルグループレコードのメンバーフィールドが空でも、Alice は developers に所属します。
developers:x:1500:
したがって、第4フィールドだけを解析すると、所属関係を完全には把握できません。
Alice の passwd レコードでは GID 1500 がプライマリ GID ですが、グループ1500の第4フィールドに名前がありません。Alice はそのグループのメンバーですか?
ユーザーのグループを確認する
解決済みアカウントのビューには id USER または groups USER を使います。
$ id alice
$ groups alice
現在のプロセスについては、引数なしの id が資格情報に実際に含まれるグループを報告します。新しく設定した補助グループ所属は通常、すでに実行中のログインセッションには現れません。新しい認証済みセッションを開始するか、必要に応じて意図的に設定した newgrp などの仕組みを使います。
現在のプロセスの UID、プライマリ GID、補助グループを報告するコマンドはどれですか?
ローカルグループを安全に変更する
汎用エディターでレコードを編集せず、groupadd、groupmod、groupdel、gpasswd、usermod などのツールを使います。特に次の違いに注意してください。
usermod -aG GROUP USER: 補助グループ所属を追加します。usermod -G ...:-aを省略すると、補助グループ一覧を置き換えます。
ローカルデータベースの手動修復が避けられない場合は、vigr でロックし、grpck で検証します。リモートの識別情報を変更する前に、復旧経路を確保してください。
管理された環境でローカルグループ管理を練習するには、次のハンズオンラボを利用できます。
- useradd、usermod、userdel で Linux ユーザーアカウントを管理する - 新規アカウントの作成と保護から変更、削除まで、ユーザー管理のライフサイクル全体を練習します。
- groupadd、usermod、groupdel で Linux グループを管理する -
groupadd、usermod、groupdelなど、グループ管理の主要なコマンドラインユーティリティーを実践します。 - 新しいユーザーとグループを追加する - 新規ユーザーアカウントとカスタムグループを作成し、所属を管理することで、サーバー環境へ新しいメンバーを追加する状況を模擬します。
レッスン完了
/etc/group を完了しました
ローカルグループレコードを解釈し、完全な所属関係をより正確に解決できるようになりました。
getent groupで設定済みのグループ情報源を問い合わせる。コロンで区切られた4個のグループフィールドを読む。
数値 GID と明示的なメンバー一覧を特定する。
passwd レコードから得られるプライマリ所属を含める。
変更した所属に依存する前に、有効な資格情報を確認する。