グループのユーザーとそのパスワードを一覧表示する方法

グループのユーザーとそのパスワードを一覧表示する方法

特定のグループのユーザーリストとそのパスワードまたは属性を表示するには?

私は使用することを知っています

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

おすすめ記事