
У меня возникла проблема с отображением файлов при использовании монтирования NFSv4 между
Server: Ubuntu 20.04, 192.168.1.1
Client: Ubuntu 18.04, 192.168.1.2
На сервере у меня есть папка и файл
/home/server/files/myfile.pdf
(обратите внимание, что «server» используется как имя учетной записи пользователя). Вот полная цепочка владельцев и разрешений исходного файла:
drwxr-xr-x root:root /
drwxr-xr-x root:root /home/
drwxr-xr-x server:server /home/server/
drwxrwxr-x server:nfsgroup /home/server/files/
-rwxrwxrwx server:nfsgroup /home/server/files/myfile.pdf
Здесь вы можете увидеть пример утилиты 'user':'group', которую я создал:
nfsuser uid=127
nfsgroup gid=134
Оба пользователя «nfsuser» и «server» входят в группу «nfsgroup».
На сервере у меня есть /files/
каталог, привязанный к /srv/nfs4/files/
, /etc/fstab
с записью
/home/server/files /srv/nfs4/files none bind 0 0
Это успешно, и я ясно вижу файл /srv/nfs4/files/myfile.pdf
как
-rwxrwxrwx server:nfsgroup /srv/nfs4/files/myfile.pdf
Вот полная цепочка прав собственности и разрешений для смонтированного и обслуживаемого файла:
drwxr-xr-x root:root /
drwxr-xr-x root:root /srv/
drwxrwxr-x server:nfsgroup /srv/nfs4/
drwxrwxr-x server:nfsgroup /srv/nfs4/files/
-rwxrwxrwx server:nfsgroup /srv/nfs4/files/myfile.pdf
Теперь я хочу экспортировать весь /srv/nfs4/
каталог, содержащий bind-mounted files/
, на клиент. У меня есть эта запись в сервере /etc/exports
:
/srv/nfs4 192.168.1.2(rw,sync,fsid=0,root_squash,all_squash,anonuid=127,anongid=134,no_subtree_check)
Обратите внимание, что all_squash,anonuid=127,anongid=134
группа настроек приводит к тому, что клиентский пользователь «client» распознается как «nfsuser» в «nfsgroup» с точки зрения разрешений.
После экспорта с помощью $ sudo exportfs -ra
я монтирую его в корневой каталог /nsffiles/
на клиенте с помощью команды $ sudo mount -t nfs 192.168.1.1:/srv/nfs4 /nsffiles
.
Результатом является то, что яможно увидетьэкспортированный files/
каталог внутри /nsffiles/
на клиенте. Однако я не могу увидеть его содержимое:
$ ls -Alhd /nsffiles/
drwxrwxr-x 8 client 134 4.0K Nov 14 20:37 /nsffiles/
$ ls -Alhd /nsffiles/files/
drwxr-xr-x 2 root root 4.0K Nov 14 20:36 /nsffiles/files/
$ ls -Alh /nsffiles/files/
total 0
files/
Тот факт, что клиент NFS вообще видит этот каталог, говорит о том, что в моих службах NFS или локальной сети нет никаких фундаментальных проблем. Нет никаких проблем с брандмауэром, и мне не нужно устанавливать никаких дополнительных пакетов. Кроме того, ранее у меня было монтирование NFS, которое прекрасно работало в немного другой структуре папок ( files/
например, в каталоге за пределами домашнего), поэтому я знаю, что в этом отношении основы в порядке.
Я предполагаю, что наиболее вероятной причиной того, что это не будет работать сейчас, является тонкое изменение владельца/разрешений между предыдущей настройкой и текущей. В частности, смонтированный каталог
server side: `/srv/nfs4/` drwxrwxr-x server:nfsgroup
client side: `/nsffiles/` drwxrwxr-x client:134
Содержащийся каталог - это
server side: `/srv/nfs4/files/` drwxrwxr-x server:nfsgroup
client side: `/nsffiles/files/` drwxr-xr-x root:root
То есть, для смонтированного каталога разрешения преобразуются как server:nfsgroup -> client:134
, что и ожидалось. Однако разрешения для содержащегося каталога преобразуются как server:nfsgroup -> root:root
. Почему, root:root
а не client:134
?
Этот ServerFaultвопросзвучит похоже, но это касается Windows, и я не могу сказать, что применим единственный ответ.
Этот Unix.SEвопроскасается прав доступа к файлам NFS для установки Windows/Linux; вся информация, которую я могу из нее почерпнуть, — это то, что я уже знаю и о чем, как мне кажется, позаботился.
Пожалуйста, отвечайте только если вы знаете, о чем говорите. Если вы не можете удержаться от публикации дикой догадки, пожалуйста, обозначьте ее как дикую догадку. Или, знаете ли, предоставьте достаточно информации, чтобы ваш читатель мог заметить разницу.