ウェブサイト検索

RHEL 8/CentOS 8でグループにユーザーを追加する方法


任意アクセス制御(DAC)メカニズムの文脈において、システムリソース、ファイル、ディレクトリへのアクセスは、ユーザーのアイデンティティと彼らが所属するグループに基づいています。この種類のアクセス制御は「任意」と呼ばれています。なぜなら、ユーザーは自身のポリシー決定を行うことができるからです(もちろん、自身の権限に制限されます)。このチュートリアルでは、ユーザーをグループに追加する方法と、RHEL 8/CentOS 8 Linuxシステムにおけるプライマリグループとセカンダリグループの違いについて学びます。

このチュートリアルでは、あなたは学びます:

  • プライマリーグループとセカンダリーグループの違いは何ですか?
  • usermodコマンドを使用してユーザーをグループに追加する方法
  • vigrを使ってユーザーをグループに直接追加する方法

Rhel8でユーザーをグループに追加する方法

ソフトウェアの要件と使用される規約

グループとは何ですか?

LinuxはUnixに基づいているため、マルチユーザーOSです:複数のユーザーが同時に存在し、システム内でリソースを共有します。最も単純なレベルでは、これらのリソースへのアクセスは、DAC(裁量アクセス制御)モデルを使用して管理されています。たとえば、ファイルやディレクトリへのアクセスは、ユーザーのIDおよびそのユーザーが所属しているgroupsに基づいています。このチュートリアルでは、Red Hat Enterprise Linux 8マシン上で既存のグループにユーザーを追加する方法を見ていきます。

一次的および二次的なグループ

近年、Red Hatは、ほとんどすべての主要なLinuxディストリビューションと同様に、UPG(ユーザープライベートグループ)と呼ばれる仕組みを使用しています。新しいユーザーが作成されるたびに、自動的にそのユーザーと同じ名前の新しいグループも作成され、そのユーザーが唯一のメンバーになります。これをプライマリまたはプライベートグループと呼びます。

各ユーザーには、自分自身にちなんだ名前のプライマリグループがあり、他のメンバーは存在しません。この設定により、デフォルトのumask値を変更することが可能になります。伝統的には022(これはファイルに対して644のパーミッション、ディレクトリに対して755のパーミッションを意味します)でしたが、現在は通常002に設定されており(ファイルに対して664のパーミッション、ディレクトリに対して775のパーミッション)、このようになっています。

デフォルトでは、ユーザーによって作成された各ファイルまたはディレクトリは、そのユーザーのプライマリグループで作成されるため、この設定はセキュリティを維持し(ユーザーは自分のファイルのみを変更できる)、setgidビットが使用されると、同じグループのメンバー間でのリソース共有とコラボレーションを簡素化します。グループに対して書き込み権限を許可することによって。

ユーザーが所属しているグループのリストを取得するためには、groups コマンドを使用します:

groups
egdoc wheel

コマンドの出力からわかるように、現在のユーザーであるegdocは、自身の主要なグループであるegdocグループおよび、sudoコマンドを実行できるようにするwheelグループに所属しています。wheelグループは、デフォルトではユーザーに関連付けられていないオプショナルなグループであり、これを二次グループと呼びます。

usermodを使用してユーザーをグループに追加します

ユーザーがそのプライマリグループの唯一のメンバーである間、リソースへのアクセスを付与するために、ユーザーをセカンダリグループに追加したいかもしれません。例えば、test ユーザーがいて、既存のグループ linuxconfig に追加したいとします。このタスクを達成するための最も簡単で推奨される方法は、usermod コマンドを使用することです:

sudo usermod -a -G linuxconfig test

使用したオプションを見てみましょう。usermodユーティリティはユーザーアカウントを変更することができ、このユーティリティを使用することで、ユーザーのホームディレクトリを変更したり、アカウントの有効期限を設定したり、すぐにロックしたりといったさまざまな操作を行うことができます。また、このコマンドでは、ユーザーを既存のグループに追加することもできます。この場合に使用したオプションは-G(--groupsの短縮形)と-a(--appendの短縮形)です。

–Gオプションまたは–groupsオプションを使用すると、ユーザーが所属すべきカンマ区切りの補助グループのリストを提供できます。以前に述べたように、提供された各グループはすでにシステム上に存在している必要があります。非常に重要なことは、提供されたグループのリストは、-aオプションが指定されるかどうかによって異なる解釈をされることです。最初のケースでは、このリストはユーザーがすでに所属しているグループに加えて追加する補助グループとして解釈されます。一方、-aオプションが指定されていない場合、このリストはユーザーが所属すべきグループの絶対的なリストとして解釈されます。コマンドのマニュアルページに記載されているように、後者の場合、ユーザーがコマンドに提供されたリストに含まれていないグループのメンバーであれば、そのグループから削除されます!

ユーザー「test」は現在「linuxconfig」グループのメンバーです。確認してみましょう:

sudo groups test
test : test linuxconfig

ユーザーをグループに直接追加する

usermodを使用することは、ユーザーをグループに追加する最も簡単な方法です。完全性を保つために、同じ作業を行う別の方法として、vigr Linuxコマンドを使用する方法を検討します。このコマンドを使用すると、/etc/groupおよび/etc/gshadowファイルを直接編集でき、ファイルが開いている間にロックされるため、破損を防ぎ、一貫性を確保します。

"影の"バージョンのファイル(/etc/gshadow)は、-sオプションが使用されたときのみ変更されます。この方法で「test」ユーザーを「linuxconfig」グループに追加するためには、スーパーユーザーとしてvigrコマンドを実行する必要があります:/etc/groupファイルはデフォルトエディタ(通常はvi)で開かれます。

[...]
chrony:x:993:
egdoc:x:1000:
cgred:x:992:
docker:x:991:
apache:x:48:
test:x:1001:test
linuxconfig:x:1002:
[...]

各グループを表すために使用される構文は以下の通りです:

group-name:group-password:group-id:users

フィールドはコロンで区切られています: 最初のフィールドはグループ名、2番目のフィールドはグループの「パスワード」(通常は設定されていません)、3番目のフィールドはGIDまたはグループIDです。最後のフィールドは、グループのメンバーのカンマ区切りリストです。「test」ユーザーを「linuxconfig」グループに追加するには、このフィールドを修正する必要があります。行が次のようになります:

linuxconfig:x:1002:test

変更が行われると、ファイルを保存して閉じることができます。ターミナルにメッセージが表示されます:

You have modified /etc/group.
You may need to modify /etc/gshadow for consistency.
Please use the command 'vigr -s' to do so.

私たちが /etc/group ファイルを変更したので、メッセージは関連するシャドウファイルである /etc/gshadow も変更するように提案しています。シャドウファイルとは、平文形式で保存することが安全でない情報の暗号化されたバージョンを保存するために使用されます。たとえば、前に見たように、/etc/group ファイルにはオプションのグループパスワードの代わりに x が報告されており、存在する場合はパスワードのハッシュ化されたバージョンがシャドウファイルに保存されます。

では、前回と同じ変更を /etc/gshadow ファイルに加えて、 /etc/group と同期させましょう。私たちがする必要があるのは、 vigr コマンドに -s フラグを提供することだけです:

sudo vigr -s

ファイルが開かれると、必要な変更を行います:

linuxconfig:!::test

その後、このファイルを書き込む必要があります。これは読み取り専用ですので、viを使用する場合は、w!コマンドを実行することでこれを行うことができます。

二つのファイルを同期させる別の方法は、grpconv コマンドを使用することで、/etc/gshadow ファイルを /etc/group から作成し、必要に応じて既存の /etc/gshadow ファイルからも作成することです。

sudo grpconv

この時点で、次のコマンドを実行することで、2つのファイル間の整合性を確認できます:

sudo grpck

この時点では出力を表示してはいけません。

結論

このチュートリアルでは、プライマリグループとセカンダリグループの違いと、DACモデルにおけるそれらの役割を見ました。usermod コマンドを使用してユーザーをグループに追加する方法(推奨される方法)や、vigr コマンドを使用して安全に /etc/group および /etc/gshadow ファイルを直接編集してユーザーをグループに追加する方法を見ました。この管理作業を実行するためにどの手順を選ぶにしても、常に最大限の注意を払うべきです。

関連記事: