Lista kontrolna mapowania użytkowników i grup kontenerów dla udziałów NAS

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Bezpieczne podejście polega na traktowaniu sprawdzania mapowania tożsamości numerycznej - od eksportu NAS przez montowanie na hoście po działający proces kontenera - jako sekwencji obserwowalnych etapów, a nie pojedynczego polecenia.

Na hoście kontenerów z systemem Linux, korzystającym z udziałów NAS opartych na SMB lub NFS, praktyczne ryzyko polega na tym, że kontener może widzieć ścieżkę zamontowaną z NAS, ale odczyt lub zapis kończy się błędami uprawnień. Zapisz bieżącą tożsamość i punkt odzyskiwania, zacznij od najmniej inwazyjnego rozróżnienia, zinterpretuj wyniki pozytywne i negatywne przed zmianą kolejnej zmiennej oraz przerwij, gdy pamięć masowa stanie się niestabilna lub jedyna możliwa do odzyskania kopia byłaby narażona. Poniższa procedura kończy się dopiero wtedy, gdy pierwotne obciążenie zakończy się powodzeniem albo dowody doprowadzą do granicy eskalacji.

Zidentyfikuj rzeczywistą tożsamość procesu kontenera

Sprawdź dokumentację obrazu, ustawienie Compose user, zmienne środowiskowe, działanie punktu wejścia oraz UID, GID i dodatkowe grupy uruchomionego procesu aplikacji. Zmienne o nazwach PUID i PGID to konwencje stosowane przez obrazy, a nie uniwersalne funkcje Dockera, dlatego potwierdź, że dany obraz je obsługuje.

Przypadek społeczności LinuxServer dotyczący uprawnień kontenera związanych z PUID i PGID pokazuje, że pozornie prawidłowe wartości PUID i PGID nadal mogą pozostawić niedostępny montowany katalog. Potraktuj ten przypadek jako przypomnienie, by sprawdzać działający proces i montowanie, a nie jako dowód, że każdy obraz stosuje tę samą logikę inicjalizacji.

Zapisz wartości numeryczne za pomocą id wewnątrz kontenera i na hoście. Przerwij, jeśli aplikacja działa jako root wyłącznie dlatego, że wcześniej wystąpiły problemy z uprawnieniami; dostęp roota maskuje błąd mapowania i zwiększa skutki przejęcia usługi.

Prześledź własność od NAS do montowania na hoście

Na NAS sprawdź numerycznego właściciela, grupę, tryb, ACL i domyślną ACL docelowego katalogu. Na hoście kontenera sprawdź te same zamontowane obiekty i porównaj wartości numeryczne. Jeśli nazwy się różnią, ale liczby są takie same, etykiety mają znaczenie wyłącznie kosmetyczne; jeśli liczby się różnią, ścieżka autoryzacji rzeczywiście jest inna.

W przypadku NFS uwzględnij opcje eksportu, wersję NFS, mapowanie identyfikatorów, root squashing oraz tożsamość klienta podczas montowania. W przypadku SMB uwzględnij dane uwierzytelniające montowania, tożsamość mapowaną po stronie serwera, opcje prezentacji uid lub gid oraz to, czy używane są rozszerzenia uniksowe lub translacja ACL.

Nie zmieniaj jednocześnie ACL serwera i opcji montowania klienta. Etap kończy się powodzeniem, gdy jeden plik testowy ma znanego właściciela numerycznego, a host widzi stabilne mapowanie po odmontowaniu, ponownym zamontowaniu i ponownym uruchomieniu.

Przetestuj montowanie wiązane i dodatkowe grupy

Potwierdź, że ścieżka źródłowa kontenera wskazuje oczekiwane montowanie na hoście, a nie pusty lokalny katalog utworzony przed zamontowaniem udziału sieciowego. Sprawdź montowanie środowiska uruchomieniowego, a następnie w nietrwałym podkatalogu przetestuj jako użytkownik aplikacji wyświetlanie zawartości, odczyt, tworzenie, zmianę nazwy i usuwanie.

Przypadek z Server Fault opisuje niezgodność uprawnień ACL w NFS, nawet gdy wpisy właściciela i ACL wydają się zgodne, pokazując, dlaczego należy sprawdzić maskę ACL, mapowanie serwera i efektywną tożsamość. Zapisz wynik getfacl zarówno dla katalogu, jak i utworzonego pliku.

Jeśli zamierzony jest dostęp grupowy, dodaj obsługiwaną dodatkową grupę numeryczną i utwórz kontener ponownie, ponieważ grupy procesów są ustalane podczas uruchamiania. Skorzystaj z poradnika ZimaSpace dotyczącego diagnozowania pustej ścieżki w kontenerze, gdy aplikacja uruchamia się ze wskazaniem na pustą ścieżkę; jest to problem kolejności montowania, a nie problem ACL.

-15% OFF

Zastosuj najwęższą poprawkę tożsamości i przetestuj ponownie

Preferuj dopasowanie obsługiwanego przez aplikację UID, GID lub dodatkowej grupy do zasad NAS. Gdy wiele usług współpracuje, użyj wspólnej grupy i dziedziczonej ACL. Unikaj uprawnień do zapisu dla wszystkich, rekurencyjnych zmian własności w niepowiązanych zbiorach danych oraz uprzywilejowanych kontenerów jako skrótów.

Utwórz kontener ponownie, ponownie zamontuj udział, jeśli zmieniły się opcje mapowania, i powtórz te same operacje. Raz uruchom ponownie hosta, aby zweryfikować, że kolejność montowania i tożsamość numeryczna są zachowane po uruchomieniu systemu. Potwierdź, że nowo utworzone pliki nadal można zapisywać z uprawnieniami przeznaczonymi dla użytkowników, bez przyznawania kontenerowi niepotrzebnych praw.

Zamknij listę kontrolną, gdy aplikacja pomyślnie obsłuży pierwotne obciążenie, operacje odrzucone nadal pozostają odrzucone, a własność jest stabilna po ponownym uruchomieniu. Eskaluj problem, jeśli przestrzenie nazw użytkowników, mapowania bez roota lub usługi tożsamości NAS przepisują identyfikatory w sposób, którego wybrany obraz nie jest w stanie obsłużyć.

Wsparcie i wskazówki

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.