Назад | Перейти на главную страницу

Как настроить монтирование NFSv4 так, чтобы владелец файлов, созданных пользователем root на NFS-клиенте, отображался как «root: root», а не «nobody: nogroup» на клиенте?

У меня есть сервер 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.