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 denied
podczas próby cd
wejś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 cd
i ma dostęp tylko do odczytu do udziału. Używanie sudo
nie 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 sudo
włączonym dostępie do zapisu) mogę otworzyć plik w zamontowanym udziale NFS, sudo vi /mnt/nfs/Files/Data/test.file
ale 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
id username
Do jakiego identyfikatora UID (dowiedz się z ) należą i do jakich uprawnień są ustawione?cd
wejść 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 klienciecd
do montowania i wykonajls -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ściowymiid
(niesudo
!) Jeśli nie możesz nawetcd
podłączyć się do zwykłego użytkownika, musisz sprawdzić uprawnienia katalogu, na który eksportujesz serwer.cd
wejść 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 iid username
./mnt/nfs/Files
. ChociażFiles
należy doroot
, 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
?Odpowiedzi:
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ąceroot (uid=0, gid=0)
doanonuid
ianongid
. 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żą
1026
i mają uprawnienia 755. Jesteś użytkownikiem klientauid=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 przezanonuid,anongid
.Dodaj opcje
all_squash,anonuid=1026,anongid=100
do 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.
źródło
Czy,
showmount -e 10.1.1.214
aby zobaczyć opcje eksportu.Permission denied
błąd pochodzi z samego serwera NFS. Spróbuj zmienić opcję zrw,user,auto
nadefaults
.źródło