Чому корінь на одній машині не може змінити вміст nfs, встановлений на іншій машині?


14

На моєму сервері NFS у мене визначено такий експорт:

#NFS exports Database
/shared -alldirs -network=192.168.1 -mask=255.255.255.0

На моєму клієнті NFS:

192.168.1.7:/shared /shared nfs rw 0 0

Очевидно, що як root на сервері, я можу робити все, що завгодно. На клієнті, однак, мій звичайний користувач 'gabe' може внести зміни в кріплення nfs (якщо припустити, що у мене є дозволи), але root не може.

Як мій постійний користувач:

gabe@client$ cd /shared
gabe@client$ ls -l
total 8
drwxrwxrwx  4 gabe  wheel   512 Mar 20 19:20 tmp
gabe@client$ cd tmp
gabe@client$ touch test.txt
gabe@client$ rm test.txt

Як корінь:

# cd /shared/tmp
# touch test.txt
touch: test.txt: Permission denied

Знову ж таки, це все на стороні клієнта NFS , і я підозрюю, що, можливо, це пов'язане з опцією -maproot. Це перший раз, коли я створюю NFS, і я щойно помітив цю особливість. Я зараз зароблю читання, щоб побачити, чи можу я це зрозуміти, але якщо хтось має розуміння, я би вдячний.

Відповіді:


18

NFS був розроблений з ідеєю, що ідентифікатори користувачів та групи будуть однаковими на всіх машинах у мережі. Для звичайних користувачів це добре. Але UID root завжди є 0, і тільки тому, що у вас є корінь на одному вікні, це не означає, що ви повинні мати root-доступ до кожної машини в мережі.

Тому NFS лікує корінь спеціально. За замовчуванням корінь відображається nobodyкористувачеві, який, як правило, не має доступу для запису. Цей -maprootпараметр дозволяє змінити спосіб обробки кореня. BSD -maproot=rootвідповідає no_root_squashваріанту Linux .


Так, справді. Це вирішило мою проблему. Сторінка чоловіка, яку я читав, була трохи загадковою (або, як я зрозумів) щодо того, що саме робив maproot. Спасибі!
габе.

Ще один нуб тут. Мені було цікаво, якщо ви, хлопці, можете знати спосіб сказати, чи налаштований NFS-диск для використання цієї -maprootопції без доступу до сервера NFS.
Джон

@John, це досить різне, що вам слід задавати нове запитання, а не додавати коментар.
cjm

5

Це звичайна поведінка з традиційними реалізаціями NFS. Відображення користувачів NFS виконується незалежно від контексту, тому всі звернення кореневим клієнтом повинні бути відображені певному користувачеві (як правило, nobodyза замовчуванням). Звідси така дивна поведінка, коли клієнтський корінь не може отримати доступ до ваших файлів безпосередньо, але може su gabeотримати доступ до них.

("Останні" версії NFS, тобто NFSv4 і, можливо, NFSv3, дозволяють економніше поведінку, якщо вони підтримуються з обох сторін, але я не знаю деталей.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.