У меня есть сервер Ubuntu 16.04, на котором установлена оснастка Nextcloud (nextcloud.lan
), и NAS с Ubuntu 16.04, настроенный для обслуживания файлов через 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
Пока что я пробовал все, что мог придумать, чтобы сопоставить none: nogroup с root: root в системе 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 snap от имени пользователя root. Я могу вынести это в отдельный вопрос.
У вас есть две записи в файле экспорта, которые перекрываются:
/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 с пользователем none. Попробуйте сузить диапазон 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.