Jak mogę uzyskać dostęp do odczytu / zapisu do udziału NFS serwera Synology NAS?

11

Mam dostęp tylko do odczytu do zamontowanego udziału NFS.

Po ustawieniu „bez mapowania squasha” na NAS, zwykły użytkownik Ubuntu dostaje się Permission deniedpodczas próby cdwejścia do udziału i może uzyskać dostęp tylko do odczytu za pomocą sudo.
Korzystając z ustawienia „zamapuj wszystkich użytkowników na administratora” squash, zwykły użytkownik klienta może cdi ma dostęp tylko do odczytu do udziału. Używanie sudonie pozwala na zapis.


Synology NAS:
DS214> id username
uid=1026(username) gid=100(users) groups=100(users),101(administration)

bez squasha (bez mapowania)
DS214> cat /etc/exports
/volume1/Files 10.1.1.2(rw,async,no_wdelay,no_root_squash,insecure_locks,sec=sys,anonuid=1025,anongid=100)

wszystkie squash (mapuj wszystkich użytkowników do administratora)
DS214> cat /etc/exports
/volume1/Files 10.1.1.2(rw,async,no_wdelay,all_squash,insecure_locks,sec=sys,anonuid=1024,anongid=100)

Klient Ubuntu:
$ cat /etc/fstab
10.1.1.214:/volume1/Files /mnt/nfs/Files nfs rw,user,auto 0 0

$ id username
uid=1000 gid=1000(username) groups=1000(username), <etc>

$ ls -n /mnt/nfs
drwxrwxrwx 9 0 0 4096 Sep 25 01:28 Files

$ ls -n /mnt/nfs/Files
drwxr-xr-x 11 1026 100 4096 Sep 24 22:05 Data


(Pierwotnie napisałem przez pomyłkę, że przy sudowłączonym dostępie do zapisu) mogę otworzyć plik w zamontowanym udziale NFS, sudo vi /mnt/nfs/Files/Data/test.fileale nie mogę zapisać zmian w pliku nawet przy pomocy sudo. Komunikat o błędzie vi na :w!polecenie to:
"test.file" E212: Can't open file for writing

marsilea
źródło
NFS sprawdza uprawnienia dostępu na podstawie identyfikatorów użytkowników (UID). Identyfikator UID użytkownika na komputerze lokalnym musi być zgodny z identyfikatorem UID właściciela plików, do których próbujesz uzyskać dostęp na serwerze . Przejdź do serwera i spójrz na uprawnienia do plików. id usernameDo jakiego identyfikatora UID (dowiedz się z ) należą i do jakich uprawnień są ustawione?
Nephente
Czy potrafisz nawet cdwejść na wierzchowca jako zwykły użytkownik? Jeśli tak, proponuję następujące. Aby potwierdzić lub obalić moje podejrzenie, wykonaj następujące czynności: Na kliencie cddo montowania i wykonaj ls -n. Spowoduje to wyświetlenie listy właścicieli plików i grup wraz z ich odpowiednimi identyfikatorami. Chyba będziesz musiał to zrobić sudo. Dołącz wiersz lub dwa dane wyjściowe do pytania wraz z danymi wyjściowymi id (nie sudo!) Jeśli nie możesz nawet cdpodłączyć się do zwykłego użytkownika, musisz sprawdzić uprawnienia katalogu, na który eksportujesz serwer.
Nephente
Nie mogłem cdwejść na wierzchowca jako zwykły użytkownik. Użycie Squash na serwerze do wymuszenia uprawnień działa jako tymczasowa poprawka do przyznania uprawnień. Badanie uprawnień serwera i id username.
marsilea
Dziękuję, myślę, że lepiej byłoby używać nfs we właściwy sposób, niż tylko brutalną siłę w Squash: „
Mapuj
To zależy. Czy ufasz klientom i użytkownikom? Jeśli tego nie zrobisz, NFSv3 nie jest w końcu odpowiedni, ponieważ każdy, kto ma dostęp root do klienta, może sfałszować UID. Jeśli potrzebujesz odpowiedniego uwierzytelnienia, lepiej użyj SMB. Uwierzytelnianie za pomocą NFSv4 wymaga uruchomienia protokołu Kerberos, co jest dość skomplikowane. Niemniej jednak twój wynik mnie zaskakuje ... Zakładam, że punktem montowania jest /mnt/nfs/Files. Chociaż Filesnależy do root, pozwolenie pozwala każdemu cokolwiek zrobić. Nie ma dla mnie sensu, dlaczego miałbyś problemy z wprowadzeniem tego katalogu jak każdy użytkownik. Może opublikować odpowiedni wiersz z /etc/exports?
Nephente

Odpowiedzi:

11

NFSv2 / 3 obsługuje uprawnienia wyłącznie na podstawie UID i GID. Uprawnienia do plików na serwerze są porównywane z identyfikatorami użytkowników i grup na kliencie. Dlatego NFSv <4 jest z założenia niepewny w środowiskach, w których użytkownicy mają dostęp root do komputerów klienckich; W takim przypadku fałszowanie UID jest banalne.

Pamiętaj, że NFSv4 oferuje uwierzytelnianie klienta i użytkownika za pośrednictwem Kerberos5. Jeśli konieczne jest uwierzytelnienie przy użyciu nazwy użytkownika i hasła, często jest znacznie łatwiej skorzystać z Samby (SMB / CIFS) zamiast konfigurować Kerberos, nawet w czystym środowisku Linux.

Aby przynajmniej zapobiec eskalacji uprawnień roota, udziały NFS są domyślnie eksportowane z opcją root_squash, która mapuje wszystkie żądania klientów przychodzące root (uid=0, gid=0)do anonuidi anongid. To zachowanie można zastąpić no_root_squash, przyznając dostęp rootowi do eksportu.

Tutaj widzimy kolejną wadę. Do prawidłowego działania NFS zasadniczo wymaga posiadania tego samego UID / GID na wszystkich komputerach. Pliki, do których chcesz uzyskać dostęp należą 1026i mają uprawnienia 755. Jesteś użytkownikiem klienta uid=1000. Identyfikatory GID też się nie zgadzają, więc otrzymujesz tylko uprawnienia do świata. W związku z tym brak dostępu do zapisu.

Aby rozwiązać ten problem, możesz wykonać jedną z wielu czynności:

  • Na serwerze NAS zmień właściciela plików na 1000. Może być konieczne utworzenie tego konkretnego konta. Jak to wpłynie na inne usługi, nie mogę powiedzieć.

  • Zmień UID lokalnego użytkownika na 1026.

  • Ponieważ tylko ty masz dostęp do plików na serwerze, możesz sprawić, że serwer będzie udawał, że wszystkie żądania pochodzą z właściwego UID. W tym celu NFS ma opcję all_squash. Informuje serwer o zamapowaniu wszystkich żądań na anonimowego użytkownika określonego przez anonuid,anongid.

    Dodaj opcje all_squash,anonuid=1026,anongid=100do eksportu w /etc/exports.

Bądź jednak ostrożny , ponieważ sprawi to, że każdy, kto efektywnie instaluje eksport, będzie właścicielem tych plików!

Jeśli udostępniasz swoją sieć osobom i ich klientom, którym całkowicie nie ufasz, aby nie wyrządzić krzywdy swoim plikom, naprawdę powinieneś przyjrzeć się metodzie udostępniania plików, która oferuje uwierzytelnianie. Moim zdaniem Samba jest najłatwiejszym sposobem na osiągnięcie tego.

Nephente
źródło
Wybrałem NFS, ponieważ myślałem, że może to mieć zalety dla Linuxa na Linuxa, ponieważ chciałbym móc wykonać kopię zapasową NAS przez rsync na zewnętrzny dysk USB na kliencie Ubuntu (system DSM Synology nie oferuje synchronizacji z dyskiem USB) , zachowując informacje o prawach własności i uprawnieniach do plików. Dokładna odpowiedź i dzięki za wskazówki.
marsilea
0

Czy, showmount -e 10.1.1.214aby zobaczyć opcje eksportu. Permission deniedbłąd pochodzi z samego serwera NFS. Spróbuj zmienić opcję z rw,user,autona defaults.

Muhammad Aizuddin
źródło