Linuxグループはユーザーの集まりです。これらは、ユーザーのグループに特権を簡単に提供することを目的としています。このチュートリアルでは、Linuxですべてのグループを一覧表示するさまざまな方法を見ていきます。
Linuxですべてのグループを一覧表示する2つの方法
- / etc/groupファイル
- getentコマンド
1。 / etc/groupファイル
/ etc / groupファイルには、すべてのローカルグループが含まれています。したがって、このファイルを開いて、すべてのグループを確認できます。
root@localhost:~# cat /etc/group root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:syslog tty:x:5: disk:x:6: lp:x:7: mail:x:8: news:x:9: ...

特定のグループを探している場合は、grepコマンドを使用してそのグループを除外します。
root@localhost:~# cat /etc/group | grep sudo sudo:x:27:journaldev,test root@localhost:~#
2。 getentコマンド
Linux getent コマンドは、NameServiceSwitchライブラリでサポートされているデータベースからエントリをフェッチします。これを使用して、グループデータベースからすべてのグループ情報を取得できます。
root@localhost:~# getent group root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:syslog tty:x:5: ...

Linuxですべてのグループを一覧表示する例をもう少し見てみましょう。
Linuxはすべてのグループ名を一覧表示します
cutコマンドを使用して、グループ名のみを出力できます。これは、シェルスクリプトで特定のグループ名の存在を探しているときに役立ちます。
root@localhost:~# cut -d: -f1 /etc/group root daemon bin sys adm tty ...

getentコマンドと一緒にcutコマンドを使用することもできます。
root@localhost:~# getent group | cut -d: -f1 root daemon bin sys adm tty disk ...

cutコマンドは、コロン(:)区切り文字を使用してすべての行を分割します。次に、グループ名である最初のフィールドが-f1オプションを使用して選択されます。
すべてのグループ名をアルファベット順に一覧表示する
上記のコマンド出力をsortコマンドに渡して、自然な並べ替え順序で出力を出力できます。
root@localhost:~# getent group | cut -d: -f1 | sort adm audio backup bin cdrom crontab daemon ...

すべてのLinuxグループの数
Linuxグループの数に関心がある場合は、次のコマンドを使用してください。
root@localhost:~# cat /etc/group | grep -c "" 68 root@localhost:~# getent group | grep -c "" 68 root@localhost:~#

ユーザーのすべてのグループを一覧表示する
groupsコマンドを使用して、ユーザーのすべてのグループを取得できます。
root@localhost:~# groups journaldev journaldev : journaldev sudo test_users test_users_pwd root@localhost:~# root@localhost:~# groups root root : root root@localhost:~#

現在のユーザーのグループを一覧表示する
ユーザー入力なしでgroupsコマンドを実行すると、現在のユーザーのグループが出力されます。
root@localhost:~# groups root root@localhost:~# su - journaldev journaldev@localhost:~$ groups journaldev sudo test_users test_users_pwd journaldev@localhost:~$

グループIDとともにユーザーグループを一覧表示する
idコマンドを使用してユーザー情報を出力できます。このコマンドは、すべてのグループとそのグループIDを一覧表示します。
root@localhost:~# id journaldev uid=1002(journaldev) gid=1003(journaldev) groups=1003(journaldev),27(sudo),1004(test_users),1007(test_users_pwd) root@localhost:~# root@localhost:~# id root uid=0(root) gid=0(root) groups=0(root) root@localhost:~#

グループのすべてのユーザーを一覧表示する
getentコマンドまたは/etc/ groupsファイルを使用して、グループに属するすべてのユーザーを取得できます。
root@localhost:~# getent group sudo sudo:x:27:journaldev,test root@localhost:~# root@localhost:~# getent group sudo | cut -d: -f4 journaldev,test root@localhost:~#

結論
getentコマンドと/etc/ groupファイルを使用して、すべてのLinuxグループの詳細を取得できます。これらをcutandsortコマンドと一緒に使用して、より良い方法で出力を表示できます。
参考資料
- getentのマニュアルページ
- コマンドのマニュアルページを切り取る