Jak wyświetlić listę wszystkich użytkowników w grupie w systemie Linux?
Opublikowany: 2022-08-29W 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
Większość wpisów na górze listy nie ma członków, chociaż grupa „adm” ma dwóch, a grupa „cdrom” ma jednego.
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
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”.
Jeśli chcemy wyodrębnić pojedynczą grupę, możemy wyszukiwać za pomocą grep
. Karetka „ ^
” reprezentuje początek linii.
grep "^devteam" /etc/group
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ż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
.
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
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
W Manjaro libuser
jest instalowany z AUR, więc musisz użyć swojego ulubionego helpera AUR. Użyliśmy yay
.
tak libuser
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
Aby zobaczyć członków grupy, użyj opcji -g
(grupa) wraz z nazwą grupy.
sudo libuser-lid -g 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
- 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”.
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ż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