Работает 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/exports
NFS-сервере:
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