ふと、Linuxでユーザ名・所属グループ名の一覧を取得したいできないんだっけと思ったので、ちょっと調べてみた。 残念ながら、一覧を取得するだけの単体のコマンドというものは見つけられなかったのだが、ユーザの一覧を取得してそこからgroupsコマンドに渡すことで、ユーザ名・グループ名の一覧が取得できる。

bash
compgen -u | xargs -I@ groups @

shell
[root@BS-PUB-CENT7-01 ~]# compgen -u | xargs -I@ groups @ root : root bin : bin daemon : daemon adm : adm lp : lp sync : root shutdown : root halt : root mail : mail operator : root games : users ftp : ftp nobody : nobody avahi-autoipd : avahi-autoipd systemd-bus-proxy : systemd-bus-proxy systemd-network : systemd-network dbus : dbus polkitd : polkitd tss : tss postfix : postfix mail sshd : sshd nginx : nginx test : nobody adm test test2 : test2 adm

このようにコマンドを実行することで、コロン区切りでユーザ名:所属グループ名を取得できる。 複数のグループに所属している場合、一番左に位置しているのがプライマリグループとなる。