Jaka jest zaleta synchronizacji UID / GID na maszynach z systemem Linux?

24

Zanim zagłębię się w proces synchronizacji identyfikatorów UID / GID na różnych komputerach z systemem Linux, chciałbym się dowiedzieć, jaka jest w rzeczywistości korzyść?

Wiem, że dzięki temu synchronizacja plików jest stosunkowo łatwa (ponieważ własność jest „naturalnie” zachowana). Można to jednak osiągnąć inaczej w zależności od usługi przesyłania.

Czy jest coś jeszcze, co zyskałoby na spójnych UID / GID?

alex
źródło
4
Nie zapomnij przy zmianie identyfikatora UID / gid, aby aktualizować archiwa (pliki tar itp.), A także pliki conf, które mogą używać identyfikatorów numerycznych zamiast nazw uid / groupnames.
Olivier Dulac

Odpowiedzi:

31

dług techniczny

Z poniższych przyczyn o wiele łatwiej jest zająć się tym problemem wcześnie, aby uniknąć kumulacji długu technicznego . Nawet jeśli znajdziesz się już w takiej sytuacji, prawdopodobnie lepiej poradzić sobie z tym w najbliższej przyszłości niż pozwolić mu kontynuować budowanie.

sieciowe systemy plików

Wydaje się, że pytanie to koncentruje się na wąskim zakresie przesyłania plików między komputerami z lokalnymi systemami plików, co pozwala na określenie stanu własności określonego komputera.

Rozważania dotyczące systemu plików w sieci są z reguły największym powodem do synchronizacji mapowań UID / GID, ponieważ zwykle można wyrzucić to „osiągnięte inaczej”, o którym wspominałeś przez okno, gdy tylko wejdą na obraz. Jasne, że nie może mieć system plików w sieci dzielone między tych hostów teraz ... Ale co z przyszłością? Czy możesz szczerze powiedzieć, że między twoimi obecnymi hostami lub hostami, które zostaną utworzone w przyszłości, nigdy nie będzie przypadku użycia sieciowego systemu plików? Nie jest zbyt przyszłościowe myślenie, aby zakładać inaczej.

Załóżmy, że /homejest to sieciowy system plików współużytkowany między host1i host2w poniższych przykładach.

  • Nie zgadzam się z uprawnieniami : /home/user1jest własnością innego użytkownika w każdym systemie. Uniemożliwia to użytkownikowi spójny dostęp do katalogu macierzystego lub modyfikowanie go w różnych systemach.
  • Chown Wars : Użytkownik często przesyła bilet z prośbą o naprawienie uprawnień do katalogu domowego w określonym systemie. Naprawienie tego problemu host2powoduje przerwanie uprawnień host1. Czasami może zająć kilka z tych biletów, zanim ktoś się cofnie i zda sobie sprawę, że toczy się przeciąganie liny. Jedynym rozwiązaniem jest naprawienie niezgodnych mapowań identyfikatorów. Który prowadzi do...
  • Piekło ponownego równoważenia UID / GID : złożoność poprawiania identyfikatorów później rośnie wykładniczo o liczbę ponownych przyporządkowań w celu poprawienia jednego użytkownika na wielu komputerach. ( user1ma identyfikator user2, ale user2ma identyfikator user17... i to tylko pierwszy system w klastrze) Im dłużej czekasz na rozwiązanie problemu, tym bardziej złożone stają się te łańcuchy, często wymagające przestoju aplikacji na wielu serwerach aby wszystko zsynchronizować.
  • Problemy z bezpieczeństwem : user2on host2ma taki sam UID jak user1on host1, dzięki czemu mogą pisać /home/user1dalej host2bez wiedzy user1. Zmiany te są następnie oceniane zgodnie host1z uprawnieniami user1. Co może pójść nie tak? (jeśli user1jest użytkownikiem aplikacji, ktoś w dev będzie odkryć jej zapisu i będzie dokonać zmian. Jest to czas udowodnione).

Istnieją inne scenariusze, a są to tylko przykłady najczęstszych.

nazwy nie zawsze są opcją

Wszelkie skrypty lub pliki konfiguracyjne zapisane w oparciu o identyfikatory numeryczne stają się z natury niemożliwe do przeniesienia w twoim środowisku. Zasadniczo nie stanowi to problemu, ponieważ większość ludzi nie koduje ich na stałe, chyba że jest to absolutnie wymagane ... ale czasami narzędzie, z którym pracujesz, nie daje wyboru w tej sprawie. W tych scenariuszach musisz zachować n różnych wersji pliku skryptu lub pliku konfiguracyjnego.

Przykład: pam_succeed_ifumożliwia korzystanie z pola user, uidi gid... opcja „grupa” jest nieobecnosc. Gdybyś znalazł się w sytuacji, w której oczekiwano, że wiele systemów zaimplementuje jakąś formę grupowego ograniczenia dostępu, będziesz miał n różnych odmian konfiguracji PAM. (lub przynajmniej jeden GID, na którym musisz unikać kolizji)

scentralizowane zarządzanie

Odpowiedź natxo całkiem dobrze to ujęła.

Andrew B.
źródło
Nie jestem pewien, czy słuszne jest twierdzenie, że korzystanie z sieciowego systemu plików zapobiega naprawianiu problemów z różnymi identyfikatorami użytkowników, znam co najmniej jeden system plików, który obsługuje mapę identyfikatorów użytkownika, pozwalając określić, które grupy i użytkownicy pasują do siebie na różnych komputerach.
Vality
@Vality Gdyby to było powszechnie dostępne rozwiązanie, nadal wahałbym się nazwać je skalowalnym.
Andrew B,
Zgadzam się, po prostu nie chciałem, aby PO myślał, że to niemożliwe, w dużej mierze zgadzam się z twoją sugestią, że najlepszym rozwiązaniem jest utrzymanie ich w synchronizacji.
Vality
dzięki! Niestety „wcześnie” już dawno minęło. Chociaż wiem, że niektóre konfiguracje ldap / kerberos to coś, co chciałbym uwzględnić tutaj, gdzie pracuję, ale nie byłoby to teraz. Z kilku innych powodów byłem szczególnie zainteresowany wykorzystaniem UID / GID w systemach współpracujących. Tak jak powiedziałem, przesyłanie plików to jedna kwestia (która obecnie ma status „działa”), dlatego chciałem wiedzieć, czy UID ma wpływ na inne rzeczy (jak wspomniałeś). Czy możesz dodać jakieś słowa kluczowe z tych „innych scenariuszy”? To by była świetna odpowiedź!
alex
@alex Cóż, miałem na myśli „inne scenariusze” pod względem problemów z sieciowym systemem plików. Bez względu na to, jak późno grasz, problem pogłębia się, ponieważ nie został rozwiązany. Jeśli podane przez nas przyczyny nie są wystarczające, prawdopodobnie pomogłoby Ci to, gdybyś bardziej skupił się na swoim pytaniu, podając te „inne powody”. Dotychczasowe odpowiedzi są, moim zdaniem, całkiem dobre. Jeśli próbujesz przekonać kierownictwo, nie spoczywa na nas obowiązek zmuszenia ich do właściwego działania.
Andrew B,
18

gdy osiągniesz określony rozmiar (i zawsze jest to wcześniej niż myślisz), zdasz sobie sprawę, że zmiana hasła lub wyłączenie kont dla kogoś na wszystkich hostach to PITA. Dlatego ludzie używają systemów z bazami danych LDAP (lub NIS, ale nie robią tego, dziś nie są bezpieczne), takich jak openldap lub obecnie doskonała freeipa.

Wszystkie informacje o kontach / grupach są przechowywane w centralnej bazie danych, wszyscy gospodarze dzielą się tymi informacjami. Możesz zrobić o wiele więcej rzeczy: skorzystaj z informacji o użytkownikach, aby uzyskać uprawnienia do plików, ale także utwórz użytkowników wirtualnych dla wszystkich aplikacji, które mają powiązania ldap, zamiast tworzyć tam użytkowników (wiele aplikacji internetowych może korzystać ldap dla ich bazy danych użytkowników), utrzymuj centralną bazę danych reguł sudo, rozpowszechniaj środowisko autofs, utrzymuj strefy dns, ...

natxo asenjo
źródło