13.8. Grupy

Grupa jest po prostu listą użytkowników. Grupy identyfikowane są na podstawie nazwy grupy oraz numeru GID (ang. Group ID). We FreeBSD (i w większości innych systemów UNIX®), dwoma czynnikami wykorzystywanymi przez jądro do określenia czy dany proces jest uprawniony do danej czynności jest identyfikator użytkownika (UID) oraz lista grup, do których użytkownik należy. W przeciwieństwie do UID, proces dysponuje listą grup powiązanych z nim. W różnych źródłach możemy przeczytać, że pewne rzeczy odnoszą się do “identyfikatora grupy” użytkownika bądź procesu; w większości przypadków oznacza to po prostu pierwszą grupę na liście.

Odwzorowanie nazwy grupy na identyfikator grupy znajduje się w pliku /etc/group. Jest to prosty plik tekstowy z czterema polami oddzielonymi dwukropkiem. Pierwsze pole zawiera nazwę grupy, drugie zaszyfrowane hasło, trzecie identyfikator grupy a czwarte listę członków grupy oddzielonych przecinkami. Plik ten można śmiało edytować ręcznie (zakładając oczywiście, że nie popełnimy żadnych błędów składniowych!). Szczegółowy opis składni pliku znaleźć można na stronie podręcznika systemowego group(5).

Jeśli nie chcemy ręcznie edytować pliku /etc/group, by dodawać i usuwać grupy, możemy wykorzystać polecenie pw(8). Przykładowo, by dodać grupę o nazwie teamtwo a następnie potwierdzić, że została dodana możemy użyć:

Przykład 13-7. Dodawanie grupy za pomocą pw(8)

# pw groupadd teamtwo
# pw groupshow teamtwo
teamtwo:*:1100:

Numer 1100 powyżej jest identyfikatorem grupy teamtwo. W chwili obecnej grupa ta nie zawiera żadnych członków i tym samym jest raczej bezużyteczna. Zmieńmy to zapraszając do grupy użytkownika jru.

Przykład 13-8. Dodawanie użytkownika do grupy za pomocą pw(8)

# pw groupmod teamtwo -M jru
# pw groupshow teamtwo
teamtwo:*:1100:jru

Parametrem opcji -M jest lista użytkowników oddzielonych przecinkami, którzy są członkami grupy. Z poprzednich sekcji wiemy, że plik haseł również zawiera przypisaną grupę dla każdego użytkownika. Jest to grupa, do której użytkownik został automatycznie dodany przez system. Taki użytkownik nie zostanie wyświetlony jako członek grupy gdy wykorzystamy polecenie pw(8) groupshow, jednakże wciąż będzie wyświetlany przy użyciu polecenia id(1) bądź innego podobnego narzędzia. Innymi słowy, pw(8) manipuluje jedynie plikiem /etc/group i nigdy nie spróbuje odczytać dodatkowych informacji z pliku /etc/passwd.

Przykład 13-9. Wykorzystanie id(1) do określenia członkostwa w grupach

% id jru
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)

Jak widzimy, jru jest członkiem grup jru i teamtwo.

Więcej informacji o poleceniu pw(8) znaleźć można w jego podręczniku systemowym. Natomiast szczegółowe informacje o formacie pliku /etc/group znajdują się w podręcznik group(5).

Ten i inne dokumenty można pobrać z ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

W przypadku pytań o FreeBSD prosimy przeczytać dostępną dokumentację przed kontaktem z <questions@FreeBSD.org>.
W sprawie zapytań o tę dokumentację prosimy o kontakt z <doc@FreeBSD.org>.