Czy istnieje polecenie, aby wyświetlić listę wszystkich nazw grup Uniksa? [Zamknięte]

615

Wiem, że jest /etc/groupplik z listą wszystkich grup użytkowników.

Chciałbym wiedzieć, czy istnieje proste polecenie, aby wyświetlić listę wszystkich nazw grup użytkowników, pomimo parsowania /etc/grouppliku czytelnego dla świata . Chcę utworzyć stronę administratora, która zawiera nazwy grup kont Linuksa.

Cavila
źródło
6
Do tej pory spróbował stackoverflow.com/questions/14059916/…
ott--
2
„Chcę stworzyć stronę internetową z listą użytkowników Linuksa” - jaki problem próbujesz rozwiązać? To brzmi jak coś, co może powodować pewne problemy z bezpieczeństwem (ujawnianie listy użytkowników, ujawnianie poświadczeń).
Próbowałem podać prosty przykład. Chciałbym otworzyć „stronę internetową systemu administratora, aby wyświetlić listę aktualnych nazw kont Linux”. W systemie Linux mogłem znaleźć polecenia, aby dodać użytkownika, usunąć użytkownika, zmienić użytkownika, znaleźć grupy danego użytkownika, ale nie znalazłem polecenia do wyszukiwania użytkownika według fragmentu nazwy. Myślę, że pytanie nie jest tak nieistotne. Jedyne, co mogłem zrobić, aby zapamiętać konto grupy Linux, to przeszukać plik / etc / group
cavila

Odpowiedzi:

871

Aby wyświetlić listę wszystkich grup lokalnych, do których przypisani są użytkownicy, użyj tego polecenia:

cut -d: -f1 /etc/group | sort

Dla bardziej INFO-> grup Unix , polecenie Wytnij , Polecenie sort

Arpit
źródło
3
Tak, MichaelIT ma rację, polecenie grup nie wyświetlało wszystkich grup. Zapytałem o to, ponieważ nie jestem pewien, czy istnieje proste polecenie, takie jak grupy, aby wyświetlić listę wszystkich nazw grup, a nawet swith, jak grupy [-a | --all], aby wyświetlić listę wszystkich grup systemowych bez skanowania plików.
cavila
1
ok, więc na razie odpowiedź brzmi NIE. Musisz użyć edycji tekstu, aby przefiltrować plik grupy.
cavila 27.12.12
3
Co to jest „cut -d: -f1”?
zed
5
@zed cutto kolejne polecenie, które wyodrębnia określoną kolumnę z danych wejściowych. Wyodrębniam pole 1, w którym pola są ograniczone przez:
Arpit
267

Jeśli chcesz, aby wszystkie grupy były znane w systemie, zaleciłbym użycie getent groupzamiast analizowania /etc/group:

getent group

Powodem jest to, że w systemach sieciowych grupy mogą nie tylko czytać z /etc/grouppliku, ale także uzyskiwać je przez LDAP lub Yellow Pages (lista znanych grup pochodzi z pliku grupy lokalnej plus grupy otrzymane w tym przypadku przez LDAP lub YP).

Jeśli chcesz tylko nazwy grup, których możesz użyć:

getent group | cut -d: -f1
dasup
źródło
7
W niektórych przypadkach preferowana może być posortowana lista nazw grup:getent group | cut -d: -f1 | sort
user1364368
2
Jeśli pożądane są linie numerowane, zrób to getent group | cut -d: -f1 | sort | cat -n.
MLC
świetny punkt dla systemów sieciowych, takich jak LDAP!
Maziyar,
50

W systemach Linux, macOS i Unix, aby wyświetlić grupy, do których należysz, użyj:

id -Gn

co jest równoważne groupsnarzędziu, które zostało przestarzałe w Uniksie (zgodnie z instrukcją Unixa ).

W systemach macOS i Unix polecenie id -pjest 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.

kenorb
źródło
10
I id -Gn someusernamezwraca listę grup dla określonego użytkownika.
ponury
6
id -Gnz | xargs -0 -I% echo %wypisze każdą grupę w osobnym wierszu. Jest to przydatne, jeśli w nazwach grup znajdują się spacje.
Mark Lakata,
1
Jak jest groupsprzestarzały? Jakieś źródła? Szukałem „przestarzałe polecenie grup unix”, ale niczego nie znalazłem.
Franklin Yu
1
@FranklinYu Jest na stronie podręcznika BSD dlagroups .
kenorb
3
Nie odpowiadaj na oryginalne pytanie dotyczące grup spoza bieżącego użytkownika.
Nie