特定グループに所属するユーザを表示する
- カテゴリ:
- Linux
LinuxやUNIXで特定のユーザが所属するグループ一覧を表示するにはgroupsというコマンドを使います。下記ではユーザjohnとrootでそれぞれ実行した例です。
$ groups john
john : beatles
$ groups root
root : root bin daemon sys adm disk wheel
では逆に特定のグループに所属するユーザ一覧を表示するには何というコマンドを使うのでしょうか?答えはありません。(のはず、知ってる方いたら教えてください)
では特定のグループに所属するユーザ一覧を表示することはできないのかというと、そんなことはもちろんありません。例えばawkコマンドで簡単に表示できます。
まず調べたいグループのgid(group id)を調べます。グループはファイル/etc/groupで管理されており、下記はbeatlesで検索し、gidが503であると表示された例です。そしてこの時点で、ユーザtaroとjiroがセカンダリグループとして所属していることが分かります。
$ grep beatles /etc/group
beatles:x:503:taro,jiro
次にユーザが登録されているファイル/etc/passwdからgidが503であるものを抜き出した例です。ここではawkコマンドを利用し、":"で区切られたデータの4列目(gid)が503であるものを検索し1列目(ユーザ名)のみの表示しています。これでプライマリグループに所属しているgeorge、john、paul、ringoが表示されました。
$ awk -F':' '$4==503{print $1}' /tmp/passwd | sort
george
john
paul
ringo
ということで、この2段階の処理で特定グループに所属するユーザをすべて表示することができます。
ちなみに最初のコマンドでtaro,jiroと続けて表示されるのが納得いかない場合は、このようにすれば改行して表示できます。
$ grep beatles /etc/group | awk -F':' '{print $4}' | awk -F',' '{gsub(",","\n") ; print $0}' | sort
jiro
taro
コメント