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

Что делает NFS, когда / etc / exports содержит экспорт, находящийся в каталоге другого экспорта?

У меня есть файл / etc / exports вроде этого:

/home          remotehost.com(rw,root_squash,anonuid=500,anongid=500)
/home/fred     remotehost.com(rw,root_squash,anonuid=1000,anongid=1000)

Работают ли два экспорта независимо друг от друга или могут возникнуть конфликты? Например, если я примонтирую / home и / home / fred, что произойдет? Если я отключу / home, останется ли / home / fred подключенным?

Спасибо

Первая строка не дает права монтировать / home / fred, она указывает только одну точку монтирования. Вторая строка не зависит от первой. Откуда вы их установите, это определит проблемы наследования.

Назовем ваш nfs-сервер nfshost.com. Допустим, на нем есть две директории в / home

  • / home / fred, принадлежит пользователю и группе с номером 500
  • / home / bob, принадлежит пользователю и группе с номером 1000

Допустим, на remotehost.com у вас есть три пустых каталога.

  • / allhome
  • / justbob
  • / Justfred

Если вы смонтировали nfshost.com:/home на / allhome, вы сможете увидеть все содержимое nfshost.com:/home на / allhome, то есть / allhome / bob и / allhome / fred. Поскольку вы включили root_squash и установили anonuid и anongid на 500, если пользователь root попытается получить доступ к чему-либо в / allhome, он будет делать это с правами доступа, которые есть у пользователя с идентификатором 500 или пользователя в группе 500 на nfshost.com. Например, если /allhome/bob/.profile имеет права доступа -rw-r -----, root сможет читать и писать в него. Если бы /allhome/fred/.profile имел права доступа -rw-r -----, root не смог бы получить к нему доступ.

Даже если вы явно не экспортировали / home / bob, поскольку это подкаталог каталога, который вы экспортировали, вы можете смонтировать nfshost.com:/home/bob в / justbob. При этом будут использоваться те же параметры экспорта, которые вы указали для / home.

Несмотря на то, что / home / fred является подкаталогом другого каталога, который вы экспортировали, поскольку вы явно экспортировали его при монтировании, параметры экспорта, указанные для него, будут иметь значение. Это означает, что если вы смонтировали nfshost.com:/home/fred на / justfred, anonuid и anongid будут установлены на 1000. Пользователь root сможет читать и писать /justfred/.profile. Это не повлияет на их невозможность получить доступ к тому же файлу по пути /allhome/fred/.profile.

Что если вы примонтировали nfshost.com:/home/fred на / allhome / fred? Это замаскирует содержимое / allhome / fred из экспорта nfshost.com:/home и отобразит содержимое из экспорта nfshost.com/home/fred. В этом случае разница не будет очевидна, поскольку файлы, к которым осуществляется доступ, одинаковы. Однако варианты экспорта не совпадают. root теперь будет обращаться к / allhome / fred с uid и gid равными 1000. Теперь они смогут читать и писать /home/fred/.profile.

Если вы попытаетесь отключить / allhome на этом этапе, вы получите сообщение об ошибке, что устройство занято. Сначала вам нужно отключить / allhome / fred.