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 /home
jest to sieciowy system plików współużytkowany między host1
i host2
w poniższych przykładach.
- Nie zgadzam się z uprawnieniami :
/home/user1
jest 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
host2
powoduje 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. (
user1
ma identyfikator user2
, ale user2
ma 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 :
user2
on host2
ma taki sam UID jak user1
on host1
, dzięki czemu mogą pisać /home/user1
dalej host2
bez wiedzy user1
. Zmiany te są następnie oceniane zgodnie host1
z uprawnieniami user1
. Co może pójść nie tak? (jeśli user1
jest 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_if
umożliwia korzystanie z pola user
, uid
i 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.