(Uwaga: groups
polecenie, choć nadal przydatne, jest w większości zastępowane przez polecenie id .)
Użytkownik ma podstawową grupę, która jest tradycyjnie zdefiniowana w pliku
/etc/passwd
pliku, z którego się loguje, ale która dziś może mieć inne źródła. Może być również członkiem dodatkowych grup, znanych jako grupy drugorzędne lub uzupełniające, tradycyjnie określone w pliku /etc/groups
, ale które dziś mogą również pochodzić lub być implikowane z dodatkowych źródeł (takich jak NIS, LDAP, SAMBA itp.).
Grupy podstawowe i dodatkowe są definiowane w momencie logowania i pozostają aktualne . Jednak użytkownik może w dowolnym momencie zmienić swoją bieżącą aktywną grupę podstawową
za pomocą newgrp
polecenia.
Proces logowania ustawia grupy podstawowe i dodatkowe. W późniejszym przypadku zazwyczaj wywołuje funkcję initcroups libc
, która kompiluje listę dodatkowych danych grupowych i przekazuje ją do
funkcji setgroups , która ustala ją w kontekście procesu.
Źródłem informacji initgroups
są:
używane przez bibliotekę GNU C i niektóre inne aplikacje do określania źródeł, z których można uzyskać informacje o usługach nazw w różnych kategoriach iw jakiej kolejności. Każda kategoria informacji jest identyfikowana przez nazwę bazy danych.
Te groups
pokazy dowodzenia grupy tak obecnie stosowane do użytkownika, a lista rozpocznie z bieżącej grupy podstawowej , a następnie przez grupy uzupełniających od czasu logowania. Wszelkie zmiany źródeł danych po czasie logowania nie są odzwierciedlane na wyświetlanej liście.
groups username
Komenda prosi Linuksa do obliczenia grupy dla tego użytkownika, który będzie to zrobić przy użyciu głównie pliki /etc/password
i /etc/groups
, a następnie dodatkowych źródeł. Odzwierciedla to obecną sytuację plików systemowych i może nie być równa bieżącym grupom , które nadal obowiązują od momentu zalogowania.
groups username
Komenda może dać inny wynik, jeśli nie korzystać ze wszystkich źródeł, że proces logowania używane do obliczania swoich dodatkowych grup, do czego najwyraźniej stało się w Twoim przypadku. Źródła te mogą być niedostępne z twojego loginu lub po prostu nie mogą być przeglądane przez polecenie.
Użycie id username
polecenia może dać lepsze wyniki, chociaż nie gwarantuje się, że będzie tak kompletne jak w procesie logowania. id
Komenda jest nowsza niż, a miała być bardziej precyzyjny niż starej groups
komendy.
Chociaż groups
polecenie daje dokładny i poprawny wynik, dobrze pokazałeś, że groups username
nie można na nim polegać.
Nie badając kodu źródłowego groups
polecenia, zgaduję, że implementacja groups username
polecenia w analizie dystrybucji Linuksa /etc/groups
, która w twoim przypadku nie zawierała niczego, ale nie używa /etc/nsswitch.conf
, z której pochodziły wszystkie twoje dodatkowe grupy. W związku z tym są wymienione jedynie podstawowej nazwy grupowego
jacob
.
Aby uzyskać więcej informacji zobacz: