特定のグループのユーザーリストとそのパスワードまたは属性を表示するには?
私は使用することを知っています
cut -d: -f1 /etc/passwd
ただし、これはユーザーだけを一覧表示します。
ベストアンサー1
基本グループが次のユーザーを一覧表示する場合somegroup
:
gid=$(getent group somegroup | awk -F : '{print $3}')
getent passwd | awk -F : -v gid="$gid" '$4 == gid'
この答えはGlibcに依存するので、組み込みLinuxを想定しています。getent
便利です。
2番目のawkコマンドを調整して、出力で必要なフィールドを設定できます。たとえば、実際の名前と電話番号のみを印刷するには、次のようにします。
getent passwd | awk -F : -v gid="$gid" '$4 == gid {print $5}'
補足グループを持つユーザーを一覧表示するには、somegroup
まずグループデータベースからユーザーIDを取得する必要があります。
usernames=$(getent group somegroup | awk -F : '{print $3 "," $4}')
gid=${usernames%%,*}; usernames=${usernames#*,}
getent passwd | awk -F : -v gid="$gid" -v usernames="$usernames" '
BEGIN {split(usernames, names, /,/); for (name in names) user[name]=1}
name[$1] || $4==gid
'
ユーザーのパスワードは保存されていないため印刷できません。アクセス権があれば、パスワードハッシュを印刷できます。パスワードデータベースがローカルの場合、パスワードハッシュはファイルにあります/etc/shadow
。ユーザー名と他のフィールドのリストを取得したら、それをシャドウファイルに関連付けることができます。
… | awk … | join -t : -j 1 - /etc/shadow