Як правильно встановити дозволи для папки NFS? На монтажному кінці заборонено дозвіл.


46

Я намагаюся підключитися до папки NFS на своєму сервері розробок. Власник папки на сервері розробників - darren та group darren.

Коли я експортую і монтую його на свій Mac за допомогою утиліти Disk Utility, яку він монтує, але тоді, коли я намагаюся відкрити папку, каже, що у мене немає дозволів. Я встановив rw, sync та no_subtree_check. Користувач на Mac - це даррен з купою груп.

Чи потрібно мати однакову групу та користувачів, щоб отримати доступ до папки?


2
Дякуємо за ваше запитання, ця тема вирішила проблему для мене! Але, будь ласка, прийміть відповідь із найбільшою кількістю відгуків.
маміу

Відповіді:


61

NFS побудований на основі аутентифікації RPC. У версії 3 NFS найпоширенішим механізмом аутентифікації є AUTH_UNIX. Ідентифікатор користувача та ідентифікатор групи клієнтської системи надсилаються під час кожного виклику RPC, і дозволи на ці ідентифікатори у файлі, до якого здійснюється доступ, перевіряються на сервері. Щоб це працювало, UID та GID повинні бути однаковими на сервері та клієнтах. Однак ви можете змусити весь доступ мати один користувач та групу, комбінуючи параметри експорту all_squash, anonuid та anongid. all_squash буде відображати всі UID та GID анонімному користувачеві, а anonuid та anongid встановлювати UID та GID анонімного користувача. Наприклад, якщо ваш UID та GID на сервері розробників є 1001, ви можете експортувати свій домашній каталог за допомогою рядка типу

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

Я менш знайомий з версією NFS 4, але, думаю, ви можете встановити rpc.idmapd на клієнтах, щоб змінити uid та gid, які вони надсилають на сервер.


7
Я наткнувся на цю відповідь, намагаючись вирішити проблему Apple OS X Yosemite nfs. Ця відповідь набагато релевантніша і точніша, ніж прийнята відповідь. Це не доцільно, а також не можливо узгодити UID / GID в різних системах. Користувач root у системі A, мабуть, не є користувачем root у системі B.
Аллан

28

Коли ви монтуєте NFS, ваші дозволи, з якими ви це встановлюєте, повинні відповідати тому, що у вас на сервері. Наприклад, якщо ваш користувач має лише доступ лише для читання, встановлення його за допомогою читання-запису призведе до того, що ви побачите ті самі помилки, які ви згадали у своєму дописі, коли ви намагаєтесь фактично завантажити кріплення. На жаль, це відображатиметься ТІЛЬКИ при доступі до папки, а не тоді, коли ви її фактично змонтуєте.

Ви також хочете переконатися, що користувальницька NFS працює як на сервері, а користувач на клієнті використовує однаковий UID та GID. Ви можете перевірити ці значення, запустивши id darrenі сервер, і клієнт. Якщо значення UID та GID не збігаються, ви можете відредагувати, /etc/passwdщоб зробити це так - але переконайтесь, що ви розумієте, що ви робите, перш ніж довільно змінювати значення!

Деякі хороші джерела:

Я сподіваюся, що це допомагає!


Так, я не повинен був намагатися змінити UID, я повинен переробити сервер зараз. Як можна імітувати UID та GID? Чи справді це складно?
Даррен

На жаль, з мого досвіду використання цього на робочому місці, NFS надзвичайно крихкий, і так - це може бути таким складним. Зазвичай вам потрібен спеціальний користувач NFS із заданим UID / GID на кожному сервері / клієнті, щоб ви не стикалися з цією проблемою. Якщо у вас є вибір у вашому середовищі розробників (тобто, НЕ МАЄ використовувати NFS), розглядаючи використання чогось типу SSHFS, ви змусите головні болі у розробці, але не буде повторюватися така ж функціональність, як виробничий сервер за допомогою NFS.
Ендрю М.

Як ви вважаєте, Самба - це інше рішення? Я використовував це з Windows без проблем, і я думаю, що це шлях, який мені доведеться пройти, хоча я використовую Mac для розробки свого додатка.
Даррен

Це, звичайно, ще одна можливість, якщо ви готові створити це.
Ендрю М.

2
Я б не вагаючись сказав, що NFS є крихким. Це давно встановлений протокол обслуговування файлів. Насправді існує лише дві вимоги до NFS: синхронізований UID / GID серед клієнтів та синхронізований час між клієнтами та сервером. Традиційно NIS використовувався для синхронізації інформації про користувачів, але LDAP є більш безпечним вибором для нових розгортань за останнє десятиліття.
Джефф Странк

2

Чи відповідають ваші UID та GID на обох серверах? Саме це використовується для контролю доступу, а не ім’я для входу та групи.


-2

Для мене проблема була виправлена ​​шляхом надання _netdevопції монтажу на клієнті.

Тобто додайте це до /etc/fstab:

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