Linux でグループが存在するかどうかを確認する方法

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Linux で異なる方法を使ってグループが存在するかどうかを確認する方法を学びます。Name Service Switch (NSS) データベースからエントリを取得する getent group コマンドを使ってグループ情報を照会する方法を調べます。

さらに、グループ情報を格納している /etc/group ファイルを直接調べる方法と、このファイル内で特定のグループを効率的に検索するために grep コマンドを使う方法を学びます。これらの技術を使えば、Linux システム上のグループの存在と詳細を確認するスキルを身につけることができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/UserandGroupManagementGroup -.-> linux/groups("Group Displaying") subgraph Lab Skills linux/cat -.-> lab-558718{{"Linux でグループが存在するかどうかを確認する方法"}} linux/grep -.-> lab-558718{{"Linux でグループが存在するかどうかを確認する方法"}} linux/groups -.-> lab-558718{{"Linux でグループが存在するかどうかを確認する方法"}} end

getent group でグループを照会する

このステップでは、getent コマンドを使って Linux システム上のグループに関する情報を照会する方法を調べます。getent コマンドは、ユーザーやグループ情報を含む Name Service Switch (NSS) データベースからエントリを取得する強力なユーティリティです。

特定のグループに関する情報を照会するには、次の構文を使用できます。

getent group [group_name]

labex グループの情報を照会してみましょう。ターミナルに次のコマンドを入力し、Enter キーを押します。

getent group labex

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

labex:x:5000:labex

この出力は、labex グループに関する詳細を提供します。

  • labex: グループ名。
  • x: プレースホルダーで、過去は暗号化されたパスワードを格納するために使用されていました(現在は別の場所に格納されています)。
  • 5000: グループ ID (GID)。
  • labex: このグループのメンバーであるユーザーのリスト(この場合、labex ユーザーが主要なメンバーです)。

次に、sudo グループの情報を照会してみましょう。このグループは重要です。なぜなら、sudo グループのユーザーはスーパーユーザー権限でコマンドを実行できるからです。

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

getent group sudo

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

sudo:x:27:labex

これは、sudo グループの GID が 27 で、labex ユーザーがメンバーであることを示しています。

getent group コマンドは、システム上の特定のグループに関する情報をすばやく確実に調べる方法です。

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

/etc/group ファイル内でグループを検索する

前のステップでは、getent group を使ってグループ情報を照会しました。次に、この情報が通常格納されている実際のファイル /etc/group を見てみましょう。

/etc/group ファイルは、システム上のすべてのグループのリストが記載されたテキストファイルです。このファイルの各行は 1 つのグループを表し、getent group で表示される情報と同様の情報が含まれています。

cat などのコマンドラインユーティリティを使ってこのファイルの内容を表示できます。cat はファイルの内容を連結して表示するために使用されます。

ターミナルに次のコマンドを入力し、Enter キーを押します。

cat /etc/group

多数のグループが 1 行に 1 つずつ表示されます。各行は次の形式に従います。

group_name:password_placeholder:GID:user_list

たとえば、次のような行が表示されるかもしれません。

root:x:0:
daemon:x:1:
...
labex:x:5000:labex
sudo:x:27:labex
...

ご覧のとおり、labex グループと sudo グループの情報はこのファイルに存在し、getent group で表示された内容と一致しています。

すべての /etc/group ファイルを表示すると、特に多数のグループがあるシステムでは圧倒的な量になることがあります。次のステップでは、grep コマンドを使ってこのファイル内で特定のグループを検索する方法を学びます。

続ける をクリックして次に進みます。

grep コマンドでグループを確認する

前のステップでは、/etc/group ファイルの全内容を表示しました。情報量は多いですが、特定のグループに関する情報だけを探したい場合には効率的ではありません。このような場合に便利なのが grep コマンドです。

grep は、正規表現に一致する行を平文データセットから検索するための強力なコマンドラインユーティリティです。簡単に言えば、ファイル内で特定の単語やパターンを含む行を見つけるのに役立ちます。

catgrep をパイプ (|) を使って組み合わせることができます。パイプは左側のコマンドの出力を右側のコマンドの入力として送ります。

/etc/group ファイル内で labex グループを含む行を検索するには、次のコマンドを入力して Enter キーを押します。

cat /etc/group | grep labex

このコマンドはまず cat を使って /etc/group の内容を出力し、次に grep labex がその出力の中から "labex" という単語を含む行を検索します。

labex グループの行が表示されるはずです。

labex:x:5000:labex

次に、sudo グループを検索してみましょう。

cat /etc/group | grep sudo

これにより、sudo グループの行が表示されます。

sudo:x:27:labex

cat と一緒に grep を使用することは、Linux で出力をフィルタリングする一般的なパターンです。これにより、大きなファイルやコマンドの出力の中から必要な特定の情報をすばやく見つけることができます。

これで、グループに関する情報を取得する 3 つの方法を学びました。whoami(自分のユーザーの主要グループについて)、id(自分のユーザーのグループについて)、getent group(特定のグループの詳細について)、そして /etc/group での grep(グループファイルを検索するため)です。

続ける をクリックしてこの実験を完了します。

まとめ

この実験では、いくつかの方法を使って Linux でグループが存在するかどうかを確認する方法を学びました。まず、getent group コマンドを調べました。これは NSS データベースからグループ情報を照会するための強力なユーティリティで、labexsudo などの特定のグループのグループ名、GID、メンバーなどの詳細を取得する方法を示しました。この方法は、グループ情報をすばやくかつ確実に検索する手段を提供します。