Jak dowiedzieć się, jaką grupę ma dany użytkownik?


256

W Unix / Linux, w jaki sposób można dowiedzieć się, w jakiej grupie jest dany użytkownik za pomocą wiersza poleceń?


23
Aby uzyskać odwrotnie, zobacz, kto jest w danej grupie, możesz użyć getent group <groupname>.
iconoclast

1
@iconoclast: nie zawiera listy użytkowników należących do grupy w / etc / passwd.
user2284570,

Odpowiedzi:



102

Ten pokazuje identyfikator użytkownika oraz wszystkie grupy (wraz z ich identyfikatorami), do których należą

id userid

2
Wydaje się to również bardzo przydatne. Ma więcej informacji wyjściowych niż komenda „groups”, więc jeśli potrzebujesz identyfikatora grupy / identyfikatora użytkownika, użyj tego!
Alex Argo,

To powinna być najbardziej szczegółowa i poprawna odpowiedź, proszę o opinię!
Harvey Lin

16

W systemie Linux / OS X / Unix, aby wyświetlić grupy, do których należy użytkownik (lub opcjonalnie określony użytkownik), należy użyć:

id -Gn [user]

co jest równoważne z groups [user]narzędziem, które zostało przestarzałe w Uniksie.

W systemie OS X / Unix polecenie id -p [user]jest sugerowane dla normalnej interaktywnej.

Objaśnienie parametrów:

-G, --groups- wydrukuj wszystkie identyfikatory grup

-n, --name- wypisz nazwę zamiast numeru, dla-ugG

-p - Niech wynik będzie czytelny dla człowieka.


0

lub po prostu studiuj / etc / groups (ok, to prawdopodobnie nie działa, jeśli używa pam z ldap)


7
Rzeczywiście, to zła odpowiedź. „grupa zdobywców” jest lepsza.
bortzmeyer

0

Poniżej znajduje się skrypt zintegrowany z programem ansible i generującym pulpit nawigacyjny w formacie 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

Moje dane wyjściowe są przechowywane w poniższych plikach tekstowych.

cat /tmp/ANSIBLENODE_sudo.txt
cat /tmp/ANSIBLENODE_inventory.txt
cat /tmp/ANSIBLENODE_inventory_users.txt
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.