Linux でユーザーがグループに所属しているかどうかを確認する方法

LinuxBeginner
オンラインで実践に進む

はじめに

この実験では、Linux でユーザーが特定のグループに所属しているかどうかを確認する方法を学びます。ユーザーのグループ所属を理解することは、Linux システムでのパーミッションとアクセス制御を管理するために不可欠です。

グループ所属を検証する 3 つの異なる方法を探索します。ユーザーのグループを一覧表示する groups コマンドの使用、グループ情報を含む /etc/group ファイルの調査、およびユーザーとグループの ID を表示する id コマンドの利用です。この実験の終わりまでに、ユーザーのグループ所属を確定することができるようになります。

groups コマンドでユーザーグループを一覧表示する

このステップでは、groups コマンドを使用してユーザーが所属するグループを一覧表示する方法を探索します。ユーザーグループを理解することは、Linux でファイルやリソースへのパーミッションとアクセスを管理するための基本です。

groups コマンドは、指定された各ユーザー名の主要グループと補助グループの名前を表示するシンプルなユーティリティです。ユーザー名が指定されない場合は、現在のプロセスのグループを表示します。

現在のユーザー (labex) がどのグループに所属しているかを調べてみましょう。

ターミナルが開いていない場合は、開きます。デスクトップの左側にある Xfce Terminal アイコンをクリックすることで開くことができます。

次に、以下のコマンドを入力して Enter キーを押します。

groups

以下のような出力が表示されるはずです。

labex sudo ssl-cert public

この出力は、labex ユーザーが所属しているグループを示しています。この例では、labex ユーザーは labexsudossl-cert、および public グループに所属しています。

  • 最初にリストされるグループは通常、ユーザーの主要グループです。
  • それ以降のグループは補助グループです。

sudo グループのメンバーであることは重要です。なぜなら、これによりユーザーは sudo コマンドを使用してスーパーユーザー権限でコマンドを実行できるからです。前の実験で htop をインストールする際に行ったようにです。

また、ユーザー名がわかっていれば、groups コマンドを使用して他のユーザーのグループを確認することもできます。たとえば、root ユーザーのグループを確認するには、以下のように入力します。

groups root

出力には、root ユーザーが所属しているグループが表示されます。通常は root グループのみです。

root

ユーザーがどのグループに所属しているかを理解することで、そのユーザーがシステム上で持っているパーミッションを理解することができます。

Continue をクリックして次のステップに進み、コマンドの実行を確認します。

/etc/group でグループ所属を確認する

このステップでは、Linux の重要なシステムファイルである /etc/group ファイルを見ていきます。このファイルには、ユーザーグループに関する情報が格納されています。groups コマンドはユーザーのグループをすぐに一覧表示しますが、/etc/group を調べることで、システム全体でどのユーザーがどのグループに所属しているかを確認できます。

/etc/group ファイルには、各グループに対応する 1 行が含まれています。各行には、コロンで区切られた 4 つのフィールドがあります。

  1. グループ名: グループの名前です。
  2. パスワードフィールド: 通常は 'x' で、グループパスワードが使用されていない(または別の場所に保存されている)ことを示します。
  3. グループ ID (GID): グループの一意の数値識別子です。
  4. メンバー: このグループのメンバーであるユーザーのカンマ区切りのリストです。ただし、このグループが主要グループであるユーザーはここにはリストされません。

cat コマンドを使用して、このファイルの内容を表示できます。cat は、ファイルを順次読み取り、標準出力に書き出す標準的な Unix ユーティリティです。

ターミナルを開き、以下のコマンドを入力して /etc/group の内容を表示します。

cat /etc/group

Enter キーを押します。

大量の出力が表示され、各行がシステム上の異なるグループを表しています。4 番目のフィールド(メンバーのリスト)に labex ユーザー名が含まれている行を探します。

たとえば、以下のような行が表示されるかもしれません(正確な出力は異なります)。

...
sudo:x:27:labex
...
ssl-cert:x:121:labex
...
public:x:5002:labex
...

これらの例の行では、

  • sudo グループに labex がメンバーとして含まれています。
  • ssl-cert グループに labex がメンバーとして含まれています。
  • public グループに labex がメンバーとして含まれています。

labex が主要グループである場合、labex グループ自体の 4 番目のフィールドに labex がメンバーとしてリストされていないことに注意してください。

/etc/group を表示することで、groups コマンドのシンプルな出力と比較して、グループの設定をより詳細に確認できます。このファイルは、システム管理者がユーザーのパーミッションを理解するために重要なファイルです。

Continue をクリックして次のステップに進みます。

id コマンドでユーザーグループを確認する

このステップでは、最初の実験で使用した id コマンドを再度見ていきます。id コマンドは、ユーザーの識別情報を包括的に表示します。これには、ユーザー ID (UID)、主要グループ ID (GID)、および所属するすべてのグループが含まれます。このコマンドは、グループの所属をすぐに確認する方法です。

あなたはすでに id を使用して、自分の UID と GID を確認しています。今度は、その出力の groups 部分に焦点を当て、groups コマンドと /etc/group ファイルで見た内容と比較してみましょう。

ターミナルを開き、以下のコマンドを入力します。

id

Enter キーを押します。

以下のような出力が表示されるはずです。

uid=XXXX(labex) gid=XXXX(labex) groups=XXXX(labex),XX(sudo),XXX(ssl-cert),XXXX(public)

(注:XXXXXX は実際の数値 ID のプレースホルダーです。数値は多少異なる場合がありますが、グループ名は一致するはずです。)

再度出力を分解して、groups セクションに焦点を当てましょう。

  • uid=XXXX(labex): あなたのユーザー ID とユーザー名です。
  • gid=XXXX(labex): あなたの主要グループ ID と主要グループ名です。
  • groups=XXXX(labex),XX(sudo),XXX(ssl-cert),XXXX(public): あなたが所属するすべてのグループのカンマ区切りのリストです。主要グループと補助グループの両方が含まれます。

id コマンドの出力の groups= セクションにあるグループ名のリストを、ステップ 1 で groups コマンドから得た出力と比較してみてください。同じグループ名のリストが表示されるはずです。

id コマンドは、数値 ID (UID と GID) も提供するため、groups コマンドよりも好まれることが多いです。これらの ID は、スクリプト作成やシステム管理タスクで役立つ場合があります。id コマンドは、1 行の出力でユーザーの識別情報とグループ所属を完全に把握することができます。

これで、Linux でユーザーのグループ所属を確認する 3 つの異なる方法を学びました。groups コマンドを使用する方法、/etc/group ファイルを調べる方法、および id コマンドを使用する方法です。各方法は多少異なる情報を提供し、異なる状況で役立ちます。

Continue をクリックして、このステップと実験を完了します。

まとめ

この実験では、Linux でユーザーがグループに所属しているかどうかを確認する 3 つの異なる方法を学びました。まず、groups コマンドを使用して、指定されたユーザーまたは現在のユーザーの主要グループと補助グループをすぐに一覧表示しました。グループへの所属がパーミッションとアクセスを決定することを理解しました。

次に、詳細なグループ情報を含む基本的なシステムファイルである /etc/group ファイルを調べ、その構造を解釈してグループ所属を直接確認する方法を学びました。最後に、ユーザー ID、主要グループ ID、およびすべての補助グループ ID を含む包括的なユーザーとグループの情報を提供する汎用ユーティリティである id コマンドを使用し、グループへの所属を確認する別の方法を学びました。