Невозможно записать на общий ресурс Linux NFS из клиента OSX

Невозможно записать на общий ресурс Linux NFS из клиента OSX

Я пытаюсь подключиться к общему диску NFS из моего Debian Squeeze box с моего ноутбука OSX 10.6, и как я ни старался, я не могу заставить его разрешить мне записывать на диск с Mac. У меня есть следующее в /etc/exports:

/mnt/usbdrive 192.168.1.0/24(rw,insecure,sync,no_subtree_check,all_squash,anonuid=1000,anongid=1000)

делая все запросы исходящими от UID/GID 1000/1000, моего пользователя, который владеет всем диском. Однако, когда я монтирую диск на Mac, все также принадлежит 1000/1000, поэтому я никогда не смогу записать на диск:

~> ls -la /Volumes/USBDrive/
drwxr-xr-x  6 1000  1000    4096  5 Sep 19:31 .
drwxrwxrwt@ 4 root  admin    170  6 Sep 22:41 ..
drwx------  2 1000  1000   16384 28 Aug 21:24 lost+found
drwxr-xr-x  2 1000  1000    4096 29 Aug 15:35 music

Я видел, что у нескольких людей была такая проблема, но единственное решение, которое я видел, это chmod всего диска 777, чего я бы предпочел избежать. К сожалению, я не могу использовать nfs-user-server в своей системе, поэтому я не могу использовать сопоставление UID/GID.

решение1

Вместо того, чтобы назначать всем файлам uid 1000, назначьте всем файлам ваш uid на Mac (запустите id -uв терминале, чтобы увидеть ваш uid). Пока вы этим занимаетесь, сделайте то же самое для gid ( id -g).

решение2

Это то, что сработало для меня на MacOS 11.1 BigSur (nfs-клиент), запущенном на Ubuntu 20.04 внутри VirtualBox VM, с использованием сети «только для хоста» для прямого подключения к виртуальной машине. Предположительно, это будет работать между двумя физическими машинами.

*** обратите внимание, что у виртуальной машины не включен брандмауэр, поскольку это виртуальная машина только для хоста, работающая внутри моего Mac. Очевидно, что для этого вам нужно открыть порты на брандмауэре на сервере.

Macbook (клиент) — 192.168.56.1 Ubuntu VM (сервер) — 192.168.56.11

Редактировать /etc/exportsна сервере:

/home/don     192.168.56.1(rw,sync,no_subtree_check,anonuid=1000,anongid=1000,all_squash)

*** не забудьте запустить exportfs -aпосле редактирования /etc/exportsфайла, прежде чем запускать mountна клиенте Mac.

** id 1000 и gid 1000 — это пользователь «don» на виртуальной машине Ubuntu

На Mac:

sudo mount -o resvport,rw -t nfs 192.168.56.11:/home/don /Users/don/ubuntudevnfs

и

sudo umount -t nfs /Users/don/ubuntudevnfs 

resvportна стороне Mac (клиента) отпадает необходимость в insecureэкспорте на стороне сервера.

UID/GID 1000 — это пользователь «don» на сервере, как видно из клиента Mac: пример текстового файла, созданного на клиентском терминале Mac

Как это выглядит на сервере: просмотр /home/don через ssh в виртуальной машине ubuntu

решение3

Одно из решений: создать группу с одинаковым идентификатором группы на обеих платформах и сделать пользователя на обеих платформах ее членом, а затем изменить параметр anongid на этот идентификатор группы.

Связанный контент