Как смонтировать папку nfsv4 напрямую, а не через root

Как смонтировать папку nfsv4 напрямую, а не через root

Работает CentOS 8

server side: /etc/exports:
/home/share *(ro)

/home и /home/share принадлежат root.root и имеют права доступа 755 к каталогам и 644 к файлам.

 client side:
 mount -t nfs4 server:/ /sharefolder

Как мне напрямую смонтировать /home/share в /sharefolder вместо монтирования корня fs? Если я попробую "mount -t nfs4 server:/home/share /sharefolder", я получу ошибку "Operation not allowed"

решение1

mount -t nfs4 server:/home/share /sharefolderпохоже, что это правильная команда на стороне клиента, и ваша настройка работает у меня, поскольку я ее только что проверил.

Конечно, вы должны ввести команду как пользователь root или использовать sudoс ним. Сообщение об ошибке «Операция не разрешена» предполагает, что вы, возможно, случайно запустили команду как не-пользователь root или неправильно ввели имя общего ресурса.

Обратите внимание, что даже если вы экспортируете и смонтируете только server:/home/share, серверу NFSv4 потребуется автоматически сгенерироватьвиртуальный экспортдля /и /home. Однако это будут не реальные /каталоги NFS-сервера /home, а виртуальные каталоги только для чтения, которые содержат только минимально необходимые подкаталоги для доступа к фактически экспортированным каталогам. После монтирования общего ресурса вы можете увидеть это на /proc/fs/nfsd/exportsNFS-сервере:

cat /proc/fs/nfsd/exports
# Version 1.1
# Path Client(Flags) # IPs
/home   *(ro,insecure,no_root_squash,sync,no_wdelay,no_subtree_check,v4root,uuid=e4c0fcd4:00b94db3:b63bd9a8:0e705e29,sec=390003:390004:390005:1)
/home/share     *(ro,root_squash,sync,wdelay,no_subtree_check,uuid=e4c0fcd4:00b94db3:b63bd9a8:0e705e29,sec=1)
/       *(ro,insecure,no_root_squash,sync,no_wdelay,no_subtree_check,v4root,fsid=0,uuid=e4c0fcd4:00b94db3:b63bd9a8:0e705e29,sec=390003:390004:390005:1)

решение2

После небольшого тестирования мне удалось воспроизвести вашу проблему, и оказалось, что это проблема брандмауэра. Пожалуйста, убедитесь, что брандмауэр отключен, и проверьте, что ваш nfsресурс работает.

Предположим, что вы используете firewalld:

sudo systemctl stop firewalld

Как только вы определите, что nfsвсе работает так, как и ожидалось, вам нужно будет изменить конфигурацию брандмауэра. nfsзависит от других процессов-демонов, поэтому для nfsправильной работы вам необходимо разрешить не только nfs, но также mountdиrpc-bind

sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --reload

Вы также можете указать зону, если хотите, чтобы эти службы были разрешены только для определенной зоны, добавив ie--zone=nfszone

Я не тестировал это решение досконально, и вам может потребоваться открыть дополнительный порт, чтобы все функции работали (например, блокировка файлов). См.https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/storage_administration_guide/s2-nfs-nfs-firewall-config

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