W / etc / group jakie jest znaczenie drugiego pola?

18

Przykładowy /etc/groupplik zawiera następujące wpisy:

root:*:0:
adm:!:4:logcheck
antoine:x:1000:

Strony podręcznika, które przeczytałem (Debian i OSX), mówią, że drugim polem jest przechowywanie hasła grupy. Ponieważ są one rzadko używane, zwykle umieszcza się w nich gwiazdkę *lub a xzamiast pozostawiać puste.

shadowStrona mężczyzna mówi, że to drugie pole należy przechowywać wynik cryptfunkcji. A jeśli zapisany zostanie nieprawidłowy wynik (taki jak *lub !), oznacza to, że hasła nie można użyć jako metody uwierzytelnienia.

Czy to dotyczy również grouppliku? Dlaczego w moim grouppliku są 3 różne znaki o tym samym znaczeniu? Czy mogę bezpiecznie zmienić wszystko na *?

Tonin
źródło
Co byś osiągnął, zmieniając je wszystkie na *?
Jordan
Widzę, że !jest używany tylko dla jednej grupy na jednym serwerze z 10+, którymi obecnie zarządzam. Dla uproszczenia niektórych skryptów sprawdzających, zawsze mając ten sam znak, wszystko by się wyjaśniło. Cóż, jeśli w rzeczywistości oznacza to to samo, oczywiście.
Tonin

Odpowiedzi:

28

Myślisz, że !, *albo xma specjalne znaczenie tutaj i są w związku z tym obawy, że nie mogą być pewne rozróżnienie między nimi.

Faktem jest, że postacie te są wybierane tylko dlatego, że wyróżniają się, przynajmniej dla zachodnich oczu. Znaki te oznaczają brakującą wartość, przypadek wyjątku lub ostrzeżenie. Możesz umieścić boogaboogatutaj i mieć dokładnie taki sam efekt.

Wynika to ze sposobu, w jaki hasła są obsługiwane w systemach typu Unix. Gdy system otrzyma hasło, szyfruje je i porównuje z przechowywanym hashem. Dlatego liczy się tylko to, że użyjesz jakiegoś znaku lub sekwencji znaków, które nie mogą być poprawnym hasłem. (Z oczywistych powodów nie może także zawierać dwukropka).

Chociaż nie ma różnicy między tymi postaciami z perspektywy głównego systemu operacyjnego, istnieją pewne konwencje:

  • Kiedy pwconv(8)program Linux widzi x, oznacza to, że „już przeniosłem ten skrót hasła publicznego do pliku hasła cienia”.

    Nie jest to ważny przypadek w praktyce, ponieważ dni konwersji na (lub, do nieba, pomóżcie, od ) haseł cieni są już za nami.

  • Jeśli używasz usermod -Llub passwd -lblokujesz użytkownika, !ma to szczególne znaczenie, /etc/shadowponieważ taka jest konwencja „przełam ten skrót, aby już nie pasował”.

    Dodanie dowolnego innego znaku do przechowywanego skrótu również go zepsuje. Naruszanie tej konwencji tylko zapobiega usermod -Ulub passwd -uod pozbycia logowanie użytkownika. Równie prawdą jest to, że ponieważ zablokowałeś go ręcznie, dodając fałszywą postać, możesz odblokować ją ręcznie, usuwając ją.

    To jednak tylko drobiazgi w związku z tym pytaniem. Nie ma groupmod -Llub gpasswd -lnie ma !konwencji w /etc/group.

    Więcej ciekawostki: jeśli zamiar blokady kont użytkowników przez strony, należy trzymać z dala od [A-Za-z0-9/\]zestawu, ponieważ są to znaki prawne dotyczące mieszania. To jeden z powodów, dla których tutaj się usermodużywa .!x

Nie widzę nic złego w normalizacji wszystkich /etc/grouppól hasła, jeśli dzięki temu poczujesz się lepiej. Robiąc to, już mówisz, że jesteś szczęśliwy, hakując te pliki ręcznie, więc prawdopodobnie nie lubisz używać narzędzi, które dbają o różnice. Niezależnie od tego zmiana nie będzie miała wpływu na codzienne działanie systemu.

Warren Young
źródło
Dziękuję za bardzo kompletną odpowiedź. Obecnie piszę skrypty sprawdzające użytkowników i grupy na moich serwerach, chciałem też wiedzieć, czy w tym polu można znaleźć inną sekwencję znaków lub znaków. Z twojej odpowiedzi i nie tak trywialnych szczegółów mam o wiele lepszy pogląd na to. Dzięki jeszcze raz!
Tonin
1
Do pisania skryptów powinieneś prawdopodobnie dzwonić getpwent(3)i mieć znajomych. Perl ma owijki dla nich w swojej standardowej bibliotece, tak jak każdy inny uniksowy język skryptowy skoncentrowany na sysadminie. Jeśli używasz języka bez takich opakowań, byłby to dobry pretekst do zamiany. :)
Warren Young,
Jeśli nadal czytasz rzeczy, które mają prawie sześć lat ... Dziękuję za odpowiedź, widzę niektóre z historycznych powodów, dla których ludzie używają takich rzeczy xi *zaznaczają pole „nieużywane” hasło. Ciekawe, chociaż ... strona podręcznika mówi, że pole może równie dobrze pozostać puste (to, co w polu bazy danych może być nazwane NULL - szczególnie w Oracle, które definiuje NULL i pusty ciąg znaków jako taki sam). Wróćmy więc do / etc / group: po co używać xlub !lub *zamiast pozostawiać puste pole? Dwa kolejne dwukropki wyróżniają się równie dobrze, jak każda z tych postaci. Nie ważne - po prostu ciekawy
mathguy
1
@mathguy: Puste pole hasła oznacza „brak hasła”, a nie to samo co pole hasła zawierające znak, który nigdy nie może się równać z prawdziwym hasłem. Ponieważ większość systemów uniksowych nie używa haseł grupowych, jest to różnica bez różnicy, ale nie chciałbyś rozwijać nawyku, który sprawi ci kłopoty, na przykład w przypadku większości systemów Linux /etc/shadow. Odrzucam również pogląd, że podwójny dwukropek jest równie jasny. Szybkie, ilu puste pola są tutaj: ::::::? Teraz ile: :x:*:!:x:*:? Tę samą liczbę dwukropków, ale różne odpowiedzi, ufam.
Warren Young