Назад | Перейти на главную страницу

Как правильно установить разрешения для папки NFS? В конце монтажа отказано в разрешении.

Я пытаюсь подключиться к папке NFS на моем сервере разработки. Владелец папки на сервере разработки - Даррен и группа Даррен.

Когда я экспортирую и монтирую его на свой Mac с помощью Дисковой утилиты, он монтируется, но затем, когда я пытаюсь открыть папку, появляется сообщение, что у меня нет разрешений. Я установил rw, sync и no_subtree_check. У пользователя Mac есть множество групп.

Требуется ли для доступа к папке одна и та же группа и пользователь?

NFS построен на основе аутентификации RPC. В NFS версии 3 наиболее распространенным механизмом аутентификации является AUTH_UNIX. Идентификатор пользователя и идентификатор группы клиентской системы отправляются при каждом вызове RPC, а права доступа этих идентификаторов к файлу, к которому осуществляется доступ, проверяются на сервере. Чтобы это работало, UID и GID должны совпадать на сервере и на клиентах. Однако вы можете принудительно осуществлять весь доступ как одному пользователю и группе, объединив параметры экспорта all_squash, anonuid и anongid. all_squash сопоставит все UID и GID анонимному пользователю, и анонид и анонгид установить 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, которые они отправляют на сервер.

Когда вы монтируете NFS, ваши разрешения, с которыми вы монтируете его, должны совпадать с тем, что у вас есть на сервере. Например, если у вашего пользователя есть доступ только для чтения, монтирование его с помощью чтения-записи приведет к тому, что вы увидите те же ошибки, которые вы упомянули в своем сообщении, когда вы попытаетесь фактически загрузить монтирование. К сожалению, это будет отображаться ТОЛЬКО при доступе к папке, а не при ее монтировании.

Вы также хотите убедиться, что пользовательская NFS работает как на сервере, а пользователь на клиенте использует один и тот же UID и GID. Вы можете проверить эти значения, запустив id darren как на сервере, так и на клиенте. Если значения UID и GID не совпадают, вы можете редактировать /etc/passwd чтобы сделать это так, но убедитесь, что вы понимаете, что делаете, прежде чем произвольно изменять значения!

Несколько хороших источников:

Надеюсь, это поможет!

Совпадают ли ваши UID и GID на обоих серверах? Это то, что он использует для управления доступом, а не логин и имя группы.

Пример того, как смонтировать общий ресурс NFS в Ubuntu Eoan в качестве сервера и MacOS Catalina в качестве клиента.

Примеры предположений (вам необходимо адаптировать это):

Имя клиентского ПК: Векселя-MBP

(Press Cmd+Space, start 'terminal', there something like bill@Bills-MBP: is written as a prompt. Use what's written between the @ and the : as client PC name further below).

Имя пользователя в Ubuntu: смокинг

(Press the penguin-key on your keyboard, if you have none, order a penguin keyboard sticky and place it over the ugly key with four mis-shaped squares near the space bar. Enter "terminal", start the terminal, the user name will be shown before the @ sign in the prompt. E.g. "tux@dustycray:")

Имя ПК с Ubuntu: пыльный

(Can be found out like shown above.)

Папка в Ubuntu для совместного использования: / главная / смокинг / mp3

Use whatever folder you need to share as absolute path

На NFS-сервере (в моем случае - Ubuntu EOAN) введите в терминал (который мы открыли, как показано выше):

id -u tux
# remember the number, use it below as anonuid (replace the 1000 there)
id -g tux
# remember the number, use it below as anongid (replace the 1001 there)
sudo nano /etc/exports
# At the end of the file add the following line, replace the path name, the Client PC Name and the two numbers with your values:
/home/tux/mp3 Bills-MBP(rw,sync,insecure,all_squash,anonuid=1000,anongid=1001)
#leave with ctrl+x and confirm file saving
sudo exportfs -ra

Теперь на Mac откройте терминал, как показано выше, и введите (оставьте / private / nfs как есть):

sudo make /private/nfs
#Replace the ubuntu pc name (dustycray) and the path (home ...) by your's now:
sudo mount -t nfs -o resvport,rw dustycray:/home/tux/mp3 /private/nfs

Тогда доступ к NFS можно будет получить по пути / private / nfs. В Finder вы увидите новую запись с названием (например) "dustycray" слева в разделе "location", а также в диалоговых окнах открытия файлов.

Вышеупомянутая процедура монтирования не является постоянной, я использую сценарий для ее монтирования, когда мне это нужно. Однако вы также можете сделать монтирование постоянным, если хотите (например, Системные настройки / Пользователи и группы / Элементы входа / + / Выберите любую корневую папку в (!) Общей папке NFS / Добавить).

Для меня проблема была решена путем предоставления _netdev возможность монтажа на клиенте.

Т.е. добавить это к /etc/fstab:

nfs-server:/   /mnt   nfs4    _netdev,auto  0  0