Как настроить монтирование NFSv4 таким образом, чтобы владелец файлов, созданных пользователем root на клиенте NFS, отображался как "root:root", а не "nobody:nogroup" на клиенте?
У меня есть сервер Ubuntu 16.04, на котором установлена оснастка Nextcloud (nextcloud.lan
) и Ubuntu 16.04 NAS, настроенный для обслуживания файлов через NFSv4 (nas.lan
). Я хотел бы смонтировать каталог /var/snap/nextcloud
на nextcloud.lan через каталог NFS, экспортируемый из NAS, так что все файлы, используемые Nextcloud, хранятся на NAS.
Проверка подлинности NFS на NAS настроена по умолчанию AUTH_SYS/AUTH_UNIX. Пожалуйста, смотрите следующие файлы конфигурации для nas.lan:
/etc/idmap.conf
:
[General]
Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
Domain = localdomain
/etc/exports
:
/vol0/export 192.168.2.0/24(rw,fsid=0,insecure,no_subtree_check,async)
/vol0/export/nextcloud 192.168.2.0/24(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
И для nextcloud.lan
:
/etc/fstab
:
nas:/nextcloud /mnt nfs auto 0 0
/etc/idmap.conf
:
[General]
Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
Domain = localdomain
В настоящее время, когда пользователь с идентификатором uid, который существует как в nas.lan, так и в nextcloud.lan, создает файл (например, имя пользователя jacob, uid 1000) в смонтированном каталоге на nextcloud.lan, файл создается с соответствующим владельцем в обеих системах. (например, Джейкоб: Джейкоб).
Однако, когда пользователь root создает файлы в экспортированном каталоге на nextcloud.lan, файлы, как представляется, принадлежат "nobody:nogroup" в обеих системах. Снимок Nextcloud может запускаться только от имени пользователя root, и поэтому мой вопрос заключается в том, как сделать так, чтобы файлы, созданные пользователем root на клиенте NFS nextcloud.lan, отображались как "root:root", а не "nobody": nogroup '?
Я читал, что NFS выполняет некоторые специальные действия с правами пользователя root и не отображает идентификатор пользователя root между системами из соображений безопасности. Мне интересно, есть ли способ переопределить это?
Я видел, что есть один вариант под названием no_root_squash
, но это не сработало для меня.
Я также попытался установить следующее в /etc/idmapd.conf
на nextcloud.local, но это также не работает для меня:
[Mapping]
Nobody-User=root
Nobody-Group=root
До сих пор я пробовал все, что мог придумать, чтобы никого не отобразить: nogroup на root:root в системе nextcloud.lan, но безуспешно.
Буду признателен за любую информацию о том, как это сделать. Спасибо за помощь.
2 ответа
У вас есть две записи в файле экспорта, которые перекрываются:
/vol0/export 192.168.2.0/24(rw,fsid=0,insecure,no_subtree_check,async)
/vol0/export/nextcloud 192.168.2.0/24(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
любой клиент в подсети 192.168.2.0/24 может (и, вероятно, использует) использовать первую запись и в конечном итоге сопоставить root с пользователем никто. Попробуйте сузить диапазон IP:
/vol0/export 192.168.2.0/24(rw,fsid=0,insecure,no_subtree_check,async) 192.168.2.1(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
где 192.168.2.1 предполагается для IP-адреса nextcloud.lan.
Я смог добиться этого с помощью следующей модификации /etc/exports:
/vol0/export 192.168.2.0/24(rw,fsid=0,insecure,no_subtree_check,async,no_root_squash)
/vol0/export/nextcloud 192.168.2.0/24(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
Затем я смог смонтировать /var/snap/nextcloud через NFS в экспортируемый каталог на NAS, и все, кажется, работает хорошо.
Однако я согласен с @AndrewHenle - этот подход кажется опасным и небезопасным, и было бы лучше найти подход, который отобразил бы пользователя root в системе nextcloud.lan пользователем без полномочий root в системе nas.lan. К сожалению, оснастка nextcloud должна быть запущена от имени пользователя root. Я могу породить это в отдельный вопрос.