FreeBSD 11.1でグループに割り当てられているユーザー名のリストを取得するにはどうすればよいですか?
この質問 ユーザーのリストまたはグループのリストを要求します。
この質問 複数の特定のグループのメンバーであるユーザーを尋ねます。
➥しかし、wheel
のような単一の特定のグループに現在割り当てられているユーザーのリストを要求する方法は?
可能であれば、1つのコマンドで解決する方が好ましいです。しかし、実行可能でない場合、スクリプトは有用で教育的です。
pw
ユーティリティで指定されたすべてのユーザーのリストから、特定のグループを持つユーザーを選択できます。
pw usershow -P -a | grep groupname
結果は次のようになります。
Login Name: username1 #1024 Group: groupname #1002
Login Name: username2 #1025 Group: groupname #1002
getent
のようなシステムスクリプトを無視すると、ユーザーは2つの方法でグループに参加できます。/etc/passwdで定義されたプリンシパルグループであるか、/ etc/groupsでセカンダリグループとして使用されます。
GROUPID=1000
sed -rn "s/^[^:]*:[^:]*:$GROUPID://p" < /etc/group | tr ',' '\n'
sed -rn "s/^([^:]*):[^:]*:[^:]*:$GROUPID:.*/\\1/p" < /etc/passwd
うまくやるべきです。 awk
はおそらくもっと見栄えがするでしょう...
GROUPID=1000
awk -F: -v "g=$GROUPID" '{if ($3==g) print $1;}' /etc/passwd
awk -F: -v "g=$GROUPID" '{if ($3==g) print $4;}' /etc/group | tr ',' '\n'
https://www.cyberciti.biz/faq/linux-list-all-members-of-a-group/ スレッドは、これを行う複数の方法を示しています。私は個人的にメンバー方式が好きです。ただし、以下の方法はネイティブであり、うまく機能します。
$ grep 'grpup-name-here' /etc/group
$ grep 'ftponly' /etc/group
$ grep -i --color 'ftponly' /etc/group