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.