Jak wykonać mapowanie identyfikatora UID NFSv4 w systemach z niedopasowaniem identyfikatora UID?

11

Pracuję w laboratorium z trzema systemami Ubuntu i chciałbym zamontować niektóre systemy plików za pośrednictwem NFS. Jednak chociaż systemy mają niektóre takie same nazwy użytkowników, identyfikatory UID i GID nie pasują, ponieważ trzy systemy zostały skonfigurowane osobno. Kiedy podłączam system plików NFS z jednego systemu do drugiego, własność pokazuje się źle. Na przykład, jeśli UID 1000 jest alice na serwerze 1, a ten sam UID, 1000, to bob na serwerze 2, wtedy gdy serwer 1 montuje eksportowany system plików serwera 2, wydaje się, że pliki boba są własnością alice.

Czy jest więc jakiś sposób, aby NFS (v4) konwertował identyfikatory UID między serwerami za pomocą powiązanych z nimi nazw użytkowników? Poszukując tego, widziałem wiele odniesień do Kerberos, LDAP lub NIS, co wydaje się ogromną przesadą przy tak prostym zadaniu i może nie być możliwe, ponieważ systemy te nie są centralnie zarządzane. Ten link wydaje się wskazywać, że to, o co proszę, jest niemożliwe. Czy to jest poprawne?

Edycja: Wypróbowałem każdą konfigurację /etc/idmapd.conf, którą mogę wymyślić lub znaleźć w Internecie, i chociaż proces idmapd jest wyraźnie uruchomiony, do tej pory nie widziałem żadnych dowodów na to, że NFS w ogóle próbuje go użyć, i nigdy nie miało to żadnego wpływu na identyfikatory użytkowników zgłaszane w instalacjach NFS.

Ryan C. Thompson
źródło
1
Uważam, że najłatwiej jest uporządkować wszystkie swoje rzeczy. Możesz pozostać przy obecnym schemacie uwierzytelniania, ponieważ masz tylko trzy skrzynki, ale musisz zsynchronizować identyfikatory UID / GID wszystkich użytkowników w swoich skrzynkach. to nie jest trudne zadanie.
Serge
Tak, w końcu to zrobiłem.
Ryan C. Thompson

Odpowiedzi:

5

Bez scentralizowanej administracji użytkownikami „najlepszym” sposobem jest wymuszenie na wszystkich serwerach używania tego samego identyfikatora GID i identyfikatora UID dla każdego użytkownika. Teraz ... Mówię tylko o plikach i / lub katalogach.

W tym przypadku zrobiłbym:

  • Zarejestruj każdy aktualnie używany identyfikator UID i GID.
  • Edytuj /etc/passwdi /etc/groupdopasuj grupy na wszystkich serwerach. Najlepiej niż nowe UID i GID, więc następny krok będzie szybszy
  • Uruchom to (zajmie to trochę czasu):

    find / -group <OLD_GID> -exec chgrp <NEW_GID> '{}' \+
    find / -user  <OLD_UID> -exec chown <NEW_UID> '{}' \+
    
BitsOfNix
źródło
Ummm, instrukcja „find” zaczyna się od katalogu głównego. Polecenie zmienia własność każdego katalogu w systemie. Sugerowane zmiany w tych poleceniach będą obejmować każdy plik w systemie. Sugeruję ograniczenie katalogów, przeciwko którym to polecenie będzie działać, w przeciwnym razie będziesz miał bardzo zły dzień.
2
Od find man: -group gname Prawda, jeśli plik należy do grupy gname. Jeśli nazwa jest numeryczna i nie pojawia się w bazie danych grupy (4), jest traktowana jako identyfikator grupy.
BitsOfNix
1

NFSv4 obsługuje mapowanie identyfikatorów. Po włączeniu NFS będzie przesyłał nazwy użytkowników zamiast identyfikatorów numerycznych. Hosty posiadające inny numeryczny identyfikator użytkownika dla tego samego użytkownika nie stanowią problemu, ponieważ nazwy użytkowników są mapowane na identyfikatory użytkownika na hoście.

Odwzorowanie identyfikatora jest zawsze używane w trybach zabezpieczeń Kerberos ( sec=krb5).

Mapowania identyfikatora można również używać w trybie AUTH_UNIX (domyślny sec=sys). Wyjaśniłem szczegóły konfiguracji w odpowiedzi na: Jak uzyskać idmapę NFSv4 działającą z sec = sys .

sebasth
źródło