1. 概要
ユーザーとグループは、Linuxのセキュリティ管理における2つの重要な要素です。 このクイックチュートリアルでは、現在のシステム上のすべてのグループを一覧表示する方法を見ていきます。
さらに、特定のユーザーが属するすべてのグループを取得する方法についても説明します。
2. / etc /groupファイルの読み取り
Linuxでは、すべてのグループがファイルで定義されています / etc/group。 さらに、各グループエントリを次の形式で保存します。
group_name:password(encrypted):GID:user_list
まず、 / etc /groupの例を見てみましょう。
$ cat /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin
adm:x:4:root,daemon
tty:x:5:
disk:x:6:root
lp:x:7:cups,daemon,kent
mem:x:8:
...
/ etc /groupファイルはプレーンテキストファイルです。 したがって、ファイルを読み取り、Linuxコマンドラインfuを使用して、グループ名などの必要なデータを抽出できます。
$ cut -d: -f1 /etc/group
root
bin
daemon
sys
adm
tty
disk
lp
mem
...
上記の例では、cutコマンドを使用してグループ名のみを抽出しました。 したがって、出力には、システム上のすべてのグループ名が含まれ、1行に1つのグループが含まれます。
3. getentコマンドの使用
/ etc / group ファイルは、ローカルシステム上のすべてのグループを定義します。
ただし、ネットワークシステムで作業している場合、システムは / etc / group ファイルからローカルグループを読み取り、はネットワークサービスなどのグループも読み取ることができます。 LDAP。
getent コマンドを使用して、 group データベースを読み取り、すべてのグループを取得できます。
$ getent group
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin
adm:x:4:root,daemon
tty:x:5:
disk:x:6:root
lp:x:7:cups,daemon,kent
mem:x:8:
...
出力が示すように、各グループのフォーマットは / etc /groupファイルと同じフォーマットです。
グループ名のみを取得したい場合は、同じcutトリックがここでも役立ちます。
$ getent group | cut -d: -f1
root
bin
daemon
sys
adm
tty
disk
lp
mem
...
4. 特定のユーザーのグループを取得する
システムですべてのグループを定義する方法を学びました。 より一般的なケースでは、特定のユーザーがどのグループに属しているかを知りたい場合があります。
このセクションでは、この情報を取得する2つの方法を示します。 どちらも非常に簡単です。
目標を達成するための最初の方法は、groupsコマンドを使用することです。 このコマンドは、shadow-utilsパッケージに同梱されています。 したがって、デフォルトですべてのLinuxディストリビューションで使用できます。
引数を指定しない場合、groupsコマンドは現在のユーザーのすべてのグループを一覧表示します。
kent$ groups
lp wheel dbus network video audio optical storage input users vboxusers docker kent
ただし、必要に応じて、コマンドにユーザー名を渡すことができ、指定されたユーザーが属するグループのみが報告されます。
kent$ groups root
root bin daemon sys adm disk wheel log
または、idコマンドを使用して実行することもできます。
id コマンドは、ユーザー名、本名、グループなどのユーザー情報を報告するための便利なユーティリティです。
idコマンドはCoreutilsのメンバーであるため、デフォルトですべてのLinuxディストリビューションにインストールされています。
-Gオプションと-nオプションを組み合わせて、idコマンドで特定のユーザーのすべてのグループ名を出力することができます。
groups コマンドと同様に、 id にユーザー名を指定しない場合、現在のユーザーのグループ名が出力されます。
kent$ id -Gn
kent lp wheel dbus network video audio optical storage input users vboxusers docker
ただし、コマンドにユーザー名を渡すと、指定されたユーザーのグループ名が自然に出力されます。
kent$ id -Gn root
root bin daemon sys adm disk wheel log
5. 結論
この簡単な記事では、最初に、システムですべてのグループを定義するための2つのアプローチを学びました。
- / etc /groupファイルの解析
- getentコマンドの使用
後で、例を通じて特定のユーザーのグループ名を取得するための2つの簡単なコマンド idとgroups)についても説明しました。