Jak poprawnie ustawić uprawnienia do folderu NFS? Odmowa dostępu po zakończeniu montażu.

46

Próbuję połączyć się z folderem NFS na moim serwerze deweloperskim. Właścicielem folderu na serwerze deweloperskim jest darren i grupa darren.

Kiedy eksportuję i montuję go na komputerze Mac za pomocą narzędzia dyskowego, montuje, ale kiedy próbuję otworzyć folder, mówi, że nie mam uprawnień. Ustawiłem rw, synchronizację i no_subtree_check. Użytkownik komputera Mac ma wiele grup.

Czy muszę mieć tę samą grupę i użytkownika, aby uzyskać dostęp do folderu?

Darren
źródło
2
Dzięki za pytanie, ten wątek rozwiązał dla mnie problem! Ale proszę zaakceptuj odpowiedź z największą aprobatą.
mamiu

Odpowiedzi:

61

NFS jest oparty na uwierzytelnianiu RPC. W NFS w wersji 3 najczęstszym mechanizmem uwierzytelniania jest AUTH_UNIX. Identyfikator użytkownika i identyfikator grupy systemu klienta są wysyłane w każdym wywołaniu RPC, a uprawnienia, które mają te identyfikatory w dostępie do pliku, są sprawdzane na serwerze. Aby to zadziałało, UID i GID muszą być takie same na serwerze i klientach. Możesz jednak zmusić cały dostęp do wystąpienia jako pojedynczy użytkownik i grupa, łącząc opcje eksportu all_squash, anonuid i anongid. all_squash zmapuje wszystkie UID i GID do anonimowego użytkownika, a anonuid i anongid ustawią UID i GID anonimowego użytkownika. Na przykład, jeśli zarówno UID, jak i GID na serwerze deweloperskim wynoszą 1001, możesz wyeksportować swój katalog domowy za pomocą linii

/home/darren 192.168.1.1/24(rw,all_squash,anonuid=1001,anongid=1001)

Mniej znam NFS w wersji 4, ale myślę, że możesz skonfigurować rpc.idmapd na klientach, aby zmienić UID i GID, które wysyłają na serwer.

Sciurus
źródło
7
Natknąłem się na tę odpowiedź, próbując rozwiązać problem Apple OS X Yosemite nfs. Ta odpowiedź jest o wiele bardziej trafna i dokładna niż odpowiedź zaakceptowana. Nie jest wskazane, ani nie jest możliwe dopasowanie UID / GID w różnych systemach. Użytkownik root w systemie A prawdopodobnie nie jest użytkownikiem root w systemie B.
Allan
28

Kiedy montujesz NFS, twoje uprawnienia, z którymi go instalujesz, muszą pasować do tego, co masz na serwerze. Na przykład, jeśli użytkownik ma dostęp tylko do odczytu, zamontowanie go za pomocą odczytu i zapisu spowoduje, że zobaczysz te same błędy, o których wspomniałeś w swoim poście, gdy spróbujesz faktycznie załadować mount. Niestety, pojawi się TYLKO podczas uzyskiwania dostępu do folderu, a nie podczas jego rzeczywistego zamontowania.

Chcesz także upewnić się, że użytkownik NFS działa tak jak na serwerze, a użytkownik na kliencie używa tego samego UID i GID. Możesz sprawdzić te wartości, uruchamiając id darrenzarówno na serwerze, jak i na kliencie. Jeśli wartości UID i GID nie pasują do siebie, możesz edytować, /etc/passwdaby to zrobić - ale upewnij się, że rozumiesz, co robisz, zanim arbitralnie zmienisz wartości!

Niektóre dobre źródła:

Mam nadzieję, że to pomoże!

Andrew M.
źródło
Tak, nie powinienem był próbować zmieniać identyfikatora UID, muszę teraz ponownie wykonać mój serwer. Jak można naśladować UID i GID? Czy to naprawdę takie skomplikowane?
Darren
Niestety, z mojego doświadczenia w stosowaniu tego w miejscu pracy, NFS jest wyjątkowo delikatny i tak - może być to skomplikowane. Zwykle będziesz potrzebować dedykowanego użytkownika NFS z określonym UID / GID na każdym serwerze / kliencie, abyś nie napotkał tego problemu. Jeśli masz wybór w swoim środowisku deweloperskim (tzn. Nie MUSI używać NFS), skorzystanie z czegoś takiego jak SSHFS sprawi, że bóle głowy programistów znikną - ale nie będzie replikować tej samej funkcjonalności co serwer produkcyjny przy użyciu NFS.
Andrew M.,
Czy uważasz, że Samba jest innym rozwiązaniem? Korzystałem z niego bez problemu w systemie Windows i myślę, że w ten sposób będę musiał przejść, mimo że do tworzenia aplikacji używam komputera Mac.
Darren
To z pewnością inna możliwość, jeśli chcesz ją skonfigurować.
Andrew M.,
2
Z wahaniem stwierdzę, że NFS jest kruchy. Jest to od dawna ustalony protokół usługi plików. W rzeczywistości istnieją tylko dwa wymagania dla NFS: zsynchronizowany UID / GID między klientami i zsynchronizowany czas między klientami a serwerem. Tradycyjnie NIS był używany do synchronizacji informacji o użytkowniku, ale LDAP jest bezpieczniejszym wyborem dla nowych wdrożeń w ostatniej dekadzie.
Jeff Strunk
2

Czy Twoje identyfikatory UID i GID są zgodne na obu serwerach? Tego używa do kontrolowania dostępu, a nie loginu i nazwy grupy.

JOTN
źródło
-2

Dla mnie problem został rozwiązany poprzez udostępnienie _netdevopcji montażu na kliencie.

Dodaj to do /etc/fstab:

nfs-server:/   /mnt   nfs4    _netdev,auto  0  0
Vanuan
źródło