Как настроить NFS для разрешения символических ссылок на стороне сервера?
Моя борода теперь сплошная седая, и я давно помню, как использовал NFS все эти десятилетия, и здесь я цитирую исходный RFC, который дает нам основу для NFS, которая у нас есть сегодня RFC1094. Конечно, с тех пор прошло три десятилетия, а некоторые - вот в чем вопрос:
Тем временем стало возможным, с помощью параметра конфигурации, интерпретировать ссылки со стороны сервера? Это наверняка решит ряд моих проблем с интерпретацией ссылок на стороне клиента!
Или я весь мокрый, и то, что я цитирую, устарело, и оно действительно, по умолчанию, разрешается на стороне сервера, и я просто гоняюсь за кроликами по кроличьим норам при устранении неполадок?
ЕСЛИ ЭТО ВСЕ ЕЩЕ СТАРАЯ ШКОЛА И ИНТЕРПРЕТИРУЕМАЯ КЛИЕНТСКАЯ СТОРОНА, и если нет опции, которая позволяет интерпретацию на стороне сервера, может ли помочь использование относительных ссылок вместо абсолютных?
Благодарю.
2 ответа
Символические ссылки всегда разрешаются клиентом. Для этого есть несколько причин. Прежде всего, в протоколе NFS есть концепция дескриптора файла. Каждый дескриптор указывает на объект файловой системы, который может быть каталогом, файлом или символической ссылкой (и некоторыми другими). Более того, в спецификации NFSv4.1 четко сказано:
Независимо от того, созданы ли данные в символической ссылке клиентом NFS или локально на сервере, они не интерпретируются при создании, а просто сохраняются.
Во-вторых, при обработке символической ссылки на стороне сервера необходимо учитывать дополнительные правила разрешений, поскольку символическая ссылка может указывать на внешнюю сторону экспортированной файловой системы.
Действительно, серверы SAMBA не имеют возможности переходить по символическим ссылкам. Это связано с тем, что (а) исходные файловые системы MS не имели концепции символических ссылок и (б) символическая ссылка, поскольку тип объекта файловой системы добавляется в SMB2 . Поведение, кстати, соответствует интерпретации NFS:
Символические ссылки НЕ ДОЛЖНЫ оцениваться сервером.
Существует несколько серверов NFS в пользовательском пространстве, которые при необходимости позволяют реализовать собственную файловую систему:
- НФС-ганеша
- nfs4j (я один из разработчиков)
Если есть веская причина разрешать символические ссылки на стороне сервера, это можно добавить.
У меня есть два компьютера в сети с одинаковыми настройками монтирования NFS, указывающими на сервер. На сервере есть символические ссылки из одного экспортированного каталога в другой. На одном клиенте ссылки работают нормально, а на другом ненадежно. Я подозреваю, что поскольку на рабочем клиенте установлена новая версия NFS (используется тот же протокол), ошибка была исправлена. Теоретически запрос должен поступить на сервер и интерпретироваться там, поскольку именно он выполняет экспорт. Если клиент поместит символическую ссылку в папку, то она, вероятно, будет неработающей на других клиентах. Однако символическая ссылка сервера должна работать. Это общее предполагает, что необходим специальный тип символической ссылки для общих сетевых ресурсов. Что-то вроде символической ссылки на сервер.