Jak wyświetlić listę wszystkich użytkowników w grupie w systemie Linux?

Opublikowany: 2022-08-29
Laptop z systemem Linux wyświetlający monit o bash
fatmawati achmad zaenuri/Shutterstock.com

W systemie Linux pliki mają trzy zestawy uprawnień. Jeden zestaw przeznaczony jest dla grupy plików. Zanim przydzielisz plik do grupy, możesz chcieć sprawdzić, kim są członkowie grupy.

Uprawnienia do plików i katalogów

Pliki i katalogi w systemie Linux mają zestaw uprawnień dla właściciela, inny zestaw dla grupy, do której jest przydzielony plik, oraz uprawnienia dla wszystkich, którzy nie należą do jednej z dwóch poprzednich kategorii.

Każdy zestaw uprawnień określa, czy członkowie tej kategorii mogą czytać, zapisywać lub wykonywać plik. W przypadku katalogu wykonanie akcji jest równoznaczne z możliwością przeciągnięcia do katalogu cd .

Domyślną grupą pliku lub katalogu jest domyślna grupa właściciela. To zazwyczaj osoba, która go stworzyła. Uprawnienia grupy są używane, aby umożliwić zbiorowi użytkowników kontrolowany dostęp do plików i katalogów innych członków tej grupy.

Na przykład możesz mieć zespół programistów, zespół dokumentacji, zespół badawczy i tak dalej. Członkowie każdego zespołu mogą zostać dodani do odpowiednio nazwanej grupy, aby wspomóc współpracę. Użytkownicy mogą należeć do wielu grup jednocześnie.

To prosty, ale solidny schemat. Ale jeśli twoje pliki są wrażliwe, możesz czuć się szczęśliwszy, sprawdzając, kim są członkowie grupy, zanim podzielisz się z nimi swoją pracą. Można to zrobić na różne sposoby. Ale zauważ. Dwie najczęściej polecane metody są problematyczne.

POWIĄZANE: Jak korzystać z polecenia chgrp w systemie Linux

Plik /etc/groups

Plik „/etc/group” zawiera rozdzieloną dwukropkiem „ : ” listę grup i członków grupy. Każda linia ma cztery pola.

  • Nazwa : unikalna nazwa grupy.
  • Hasło : Nieużywane. To zawsze będzie zawierać „x”.
  • Identyfikator grupy : Unikalny identyfikator grupy.
  • Użytkownicy : rozdzielona przecinkami lista członków grupy. Lista jest zwykle pusta dla kont systemowych i demonów.

Aby zrzucić zawartość pliku do okna terminala, możesz użyć cat , ale wygodniej jest przewijać zawartość pliku za pomocą less .

 mniej /etc/grupa 

Używanie cat do przeglądania zawartości pliku /etc/group

Większość wpisów na górze listy nie ma członków, chociaż grupa „adm” ma dwóch, a grupa „cdrom” ma jednego.

Pierwsza część pliku /etc/groups w mniejszej przeglądarce plików

Jeśli chcemy odkryć grupy, w których znajduje się określony użytkownik, możemy użyć grep do wyszukania wpisów z nazwą jego konta użytkownika. To nie jest nasze zadanie. Chcemy widzieć każdego, kto jest członkiem grupy, a nie grupy, do których należy jedna osoba. Ale pouczające jest dla nas spojrzenie.

 grep "dave" /etc/group 

Lista grup, których członkiem jest użytkownik dave

Wpisy zawierające ciąg „dave” są dla nas wymienione. A schowany wśród nich znak, że sprawy mogą nie być tak proste, jak myśleliśmy.

Gdy użytkownik jest dodawany do Linuksa, domyślną akcją jest umieszczenie go w grupie o tej samej nazwie, co jego konto użytkownika. To jest ich podstawowa grupa. Wszelkie inne grupy, do których są dodani, są nazywane grupami drugorzędnymi .

Problem polega na tym, że użytkownicy nie są wymienieni jako członkowie ich grup podstawowych . Dlatego grupa „dave” nie pokazuje żadnych członków, chociaż użytkownik „dave” jest członkiem tej grupy.

Oczywiście administratorzy systemu mogą zmienić podstawową grupę dowolnego użytkownika na dowolną inną grupę. Oznacza to, że użytkownik może być członkiem dowolnej grupy, ale nie zostanie wymieniony jako taki w pliku „/etc/group”. To jeden problem.

Drugą kwestią jest to, że plik „/etc/group” nie jest pojedynczym źródłem prawdy. Nowoczesne instalacje systemu Linux mogą dobrze przechowywać informacje o użytkownikach i grupach w większej liczbie miejsc niż "/etc/passwd" i "/etc/group", szczególnie w sytuacjach korporacyjnych, w których wdrażane są usługi takie jak Lightweight Directory Access Protocol. Patrząc tylko w jedno miejsce, możesz nie widzieć pełnego obrazu.

W naszym scenariuszu testowym stworzyliśmy cztery grupy dla działu rozwoju. Oni są:

  • resteam : Zespół badawczy.
  • devteam : Zespół programistów.
  • pvqteam : Zespół weryfikacji i jakości produktów.
  • docteam : Zespół dokumentacji.

Do tych zespołów dodaliśmy ludzi. Niektórzy ludzie są w więcej niż jednym zespole. Jeśli otworzymy plik „/etc/group” w less i przewiniemy do dołu pliku, zobaczymy nowe grupy i członków grupy. Przynajmniej tylu członków, o których wie plik „/ etc / group”.

Dół pliku /etc/group w przeglądarce plików mniej

Jeśli chcemy wyodrębnić pojedynczą grupę, możemy wyszukiwać za pomocą grep . Karetka „ ^ ” reprezentuje początek linii.

 grep "^devteam" /etc/group 

Używanie grep do wyodrębnienia członków jednej grupy

Wyodrębnia to wpis „devteam” z pliku i wyświetla listę wszystkich członków grupy. Czy to prawda?

Getent Command

Polecenie getent sprawdza wiele baz danych pod kątem informacji o grupie użytkowników, a nie tylko „/ etc / group”. Użyjemy getent , aby pokazać nam grupy użytkowników.

 grupa getent 

Używanie getent do wylistowania wszystkich zdefiniowanych grup

Użycie getent z opcją group daje - na tej maszynie testowej - takie same wyniki, jak użycie pliku "/ etc / group". Dzieje się tak, ponieważ nie używamy LDAP ani żadnej innej scentralizowanej usługi nazewnictwa. Więc nie ma innych źródeł, do których można by się getent .

Dane wyjściowe z grupy getent pokazujące grupy i członków

Nic więc dziwnego, że wyniki pokrywają się z wynikami z pliku „/etc/group”. Być może to, co widzimy naprawdę, jest rzeczywistością sytuacji. Może wszystko jest proste i – na tym komputerze – dostajesz to, co widzisz? Zachowajmy osąd w tej sprawie.

Polecenie getent może za nas spojrzeć na pojedynczą grupę. Przyjrzymy się grupie „devteam”.

 devteam grupy getent 

Użycie grupy getent do wyodrębnienia szczegółów pojedynczej grupy

Uzyskujemy dokładnie takie same wyniki jak poprzednio. Jest jednak sposób, aby kopać głębiej.

POWIĄZANE: Jak wyświetlić listę użytkowników w systemie Linux

Komenda pokrywy

Polecenie lid jest częścią kolekcji narzędzi libuser . Został już zainstalowany na naszym komputerze testowym Fedora 36, ​​ale musiał zostać zainstalowany na Ubuntu 22.04 i Manjaro 21.

Również w Fedorze i Manjaro polecenie to nazywa się lid , ale w Ubuntu musisz użyć libuser-lid .

Aby zainstalować polecenie na Ubuntu, wpisz:

 sudo apt zainstaluj libuser 

Instalowanie libusera na Ubuntu

W Manjaro libuser jest instalowany z AUR, więc musisz użyć swojego ulubionego helpera AUR. Użyliśmy yay .

 tak libuser 

Instalowanie libusera na Manjaro

Możesz użyć libuser-lid , aby wyświetlić informacje o grupach lub użytkownikach. Aby wyświetlić grupy, w których znajduje się dana osoba, przekaż nazwę konta użytkownika w wierszu poleceń. W Fedorze i Manjaro pamiętaj o używaniu lid zamiast libuser-lid .

 sudo libuser-lib dave 

Używanie libuser-lid do pokazywania grup, których członkiem jest użytkownik dave

Aby zobaczyć członków grupy, użyj opcji -g (grupa) wraz z nazwą grupy.

 sudo libuser-lid -g devteam 

używanie libuser-lid do wyświetlania listy członków grupy devteam

I oto użytkownik o imieniu „francis” pojawił się jako członek listy. Widzimy go po raz pierwszy. Nie jest wymieniony w „/etc/group” i getent też go nie znalazł.

Przyjrzyjmy się kilku użytkownikom z poleceniem groups .

 grupy Abigail
 grupy hayden
 grupy franciszkańskie 

Korzystanie z polecenia grup na wybranych użytkownikach

  • Użytkownik „abigail” znajduje się w grupie o nazwie „abigail” i dwóch innych grupach, „resteam” i „devteam”.
  • Użytkownik „hayden” znajduje się w grupie o nazwie „hayden” i dwóch innych grupach, „pvqteam” i „docteam”.
  • Użytkownik „francis” należy do jednej grupy, grupy „devteam”. Warto zauważyć, że nie należą do grupy o nazwie „francis”.
Dodaj użytkownika do grupy (lub drugiej grupy) w systemie Linux
POWIĄZANE Dodaj użytkownika do grupy (lub drugiej grupy) w systemie Linux

Wiemy, że każdy użytkownik musi być członkiem grupy podstawowej i że domyślnie grupa podstawowa ma identyfikator GID i nazwę, które są zgodne z UID użytkownika i nazwą konta. Wygląda na to, że użytkownik „francis” jest inny.

Użyjmy polecenia id i zobaczmy, co mówią nam UID i GID.

 Id Abigail
 id francis 

Używanie polecenia id na użytkownikach abigail i francis

Użytkownik „abigail” ma UID równy 1002 i GID równy 1002. Są one podzielone na trzy grupy, z których jedna nazywa się „abigail”. Ma GID 1002. Jest to ich domyślna grupa podstawowa.

Użytkownik „francis” ma identyfikator GID równy 1019, co odpowiada identyfikatorowi GID grupy „devteam”. Do tego użytkownika została przypisana nowa grupa podstawowa lub grupa „devteam” została ustawiona jako grupa podstawowa, gdy ten użytkownik został dodany do systemu.

Niezależnie od tego, który to był, tylko libuser-lid wykrył je i zgłosił ich obecność w grupie „devteam”.

Diabeł tkwi w szczegółach

Dlatego ważne jest, aby zobaczyć prawdziwe szczegóły.

Grupy to świetny sposób na skonfigurowanie współpracy, o ile wiesz, z kim ją otwierasz.

POWIĄZANE: Jak zmienić dane użytkownika za pomocą chfn i usermod w systemie Linux