Я пытаюсь подключиться к папке 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