特定のユーザーがどのグループを持っているかを知る方法は?


256

Unix / Linuxでは、コマンドラインを使用して、特定のユーザーがどのグループに属しているかをどのように確認しますか?


23
反対を取得するには、特定のグループに誰が属しているかを確認し、を使用できますgetent group <groupname>
iconoclast

1
@iconoclast:/ etc / passwdのグループに属するユーザーはリストされません。
user2284570

回答:



102

これは、ユーザーのuidと、ユーザーが属しているすべてのグループ(およびGIID)を示しています

id userid

2
これもかなり便利なようです。'groups'コマンドよりも詳細な出力があるため、グループID /ユーザーIDが必要な場合はこれを使用してください。
Alex Argo

これは最も詳細で正しい答えであるはずです。賛成投票してください!
Harvey Lin

16

Linux / OS X / Unixでは、自分(またはオプションで指定したユーザー)が所属するグループを表示するには、次のコマンドを使用します。

id -Gn [user]

これはgroups [user]、Unixで廃止されたユーティリティと同等です。

OS X / Unixでは、このコマンドid -p [user]は通常のインタラクティブで推奨されます。

パラメータの説明:

-G--groups-すべてのグループIDを出力する

-n--name-番号ではなく名前を出力します-ugG

-p -出力を人間が読める形式にします。


0

または、単に/ etc / groupsを調べます(LDAPでpamを使用している場合、これはおそらく機能しません)


7
確かに、それは悪い答えです。'getent group'はより良いものです。
bortzmeyer 2008

0

以下は、CSS形式でansibleおよびgenerateダッシュボードに統合されているスクリプトです。

sh collection.sh

#!/bin/bash

HOSTNAME=`hostname -s`

for i in `cat /etc/passwd| grep -vE "nologin|shutd|hal|sync|root|false"|awk -F':' '{print$1}' | sed 's/[[:space:]]/,/g'`; do groups $i; done|sed s/\:/\,/g|tr -d ' '|sed -e "s/^/$HOSTNAME,/"> /tmp/"$HOSTNAME"_inventory.txt

sudo cat /etc/sudoers| grep -v "^#"|awk '{print $1}'|grep -v Defaults|sed '/^$/d;s/[[:blank:]]//g'>/tmp/"$HOSTNAME"_sudo.txt

paste -d , /tmp/"$HOSTNAME"_inventory.txt /tmp/"$HOSTNAME"_sudo.txt|sed 's/,[[:blank:]]*$//g' >/tmp/"$HOSTNAME"_inventory_users.txt

以下のテキストファイルに保存されている私の出力。

cat /tmp/ANSIBLENODE_sudo.txt
cat /tmp/ANSIBLENODE_inventory.txt
cat /tmp/ANSIBLENODE_inventory_users.txt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.