Bagaimana cara mengetahui grup apa yang dimiliki pengguna tertentu?

256

Di Unix / Linux, bagaimana Anda mengetahui grup apa yang diberikan pengguna melalui baris perintah?

Alex Argo
sumber
23
Untuk mendapatkan yang sebaliknya, lihat siapa yang ada di grup tertentu, Anda dapat menggunakan getent group <groupname>.
iconoclast
1
@iconoclast: yang tidak mencantumkan pengguna yang termasuk dalam grup di / etc / passwd.
user2284570

Jawaban:

371
groups

atau

groups user
Bombe
sumber
102

Ini menunjukkan pengguna uid serta semua kelompok (dengan gids mereka) milik mereka

id userid
Paul Tomblin
sumber
2
Ini tampaknya sangat berguna juga. Ini memiliki lebih banyak keluaran verbose daripada perintah 'grup', jadi jika Anda memerlukan id grup / id pengguna gunakan ini!
Alex Argo
Ini harus menjadi jawaban yang paling terperinci dan benar, dapatkan upvote!
Harvey Lin
16

Di Linux / OS X / Unix untuk menampilkan grup tempat Anda (atau pengguna yang ditentukan opsional), gunakan:

id -Gn [user]

yang setara dengan groups [user]utilitas yang sudah usang di Unix.

Pada OS X / Unix, perintah id -p [user]disarankan untuk interaktif normal.

Penjelasan tentang parameter:

-G, --groups- cetak semua ID grup

-n, --name- cetak nama, bukan angka, untuk-ugG

-p - Jadikan output yang dapat dibaca manusia.

kenorb
sumber
0

atau hanya belajar / etc / groups (ok ini mungkin tidak berfungsi jika menggunakan pam dengan ldap)

Nils
sumber
7
Memang, itu jawaban yang buruk. 'getent group' adalah yang lebih baik.
bortzmeyer
0

Di bawah ini adalah skrip yang diintegrasikan ke dalam dashboard yang memungkinkan dan menghasilkan dalam format CSV.

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

Output saya disimpan dalam file teks di bawah ini.

cat /tmp/ANSIBLENODE_sudo.txt
cat /tmp/ANSIBLENODE_inventory.txt
cat /tmp/ANSIBLENODE_inventory_users.txt
namasivayam.cse
sumber