Samba share — следует по символической ссылке, но уже находится в локальном пути

Samba share — следует по символической ссылке, но уже находится в локальном пути

Я только что столкнулся с проблемой, решения которой нигде не смог найти (например, в документации Samba).

У меня есть общий ресурс Samba на сервере server1, и этот общий ресурс смонтирован на сервере server2. Общий ресурс сервера server1 является символической ссылкой на /var/container/db.

Проблема в том, что когда я пытаюсь открыть эту символическую ссылку на папку с сервера server2, она показывает мои локальные файлы на сервере server2, поскольку путь /var/container/dbсуществует на моем сервере server2.

Что может вызвать эту проблему и каково ее решение?

Оба сервера работают на Debian.

решение1

Если вы делитесь симлинком между хостами Unix-подобных систем, система, которая монтирует ресурс, будет интерпретировать симлинк в соответствии со своим собственным деревом файловой системы. Именно так работают симлинки в стиле Unix.

Если общий ресурс на сервере 1 включает то, на что вы хотите, чтобы указывала символическая ссылка, вы можете использоватьродственниксимволическая ссылка вместо абсолютной.

Например, если ваш общий ресурс Samba находится на сервере server1 /varи смонтирован на сервере server2 как /server1var, а символическая ссылка расположена на сервере server1 как /var/some/directory/link-to-db, ваша текущая символическая ссылка будет выглядеть следующим образом:

server1# ln -s /var/container/db /var/some/directory/link-to-db

Вместо этого вы можете сделать это так:

server1# cd /var/some/directory
server1# ln -s ../../container/db link-to-db

Если база данных на сервере server1 не находится в общем ресурсе Samba, то вам понадобится параметр сервера Samba wide links = yes. Это заставит server1 перейти по символической ссылке и предоставить доступ к server1 /var/container/dbвместо того, чтобы просто передавать символ

Однако если сервер работает с настройками по умолчанию, он также включен unix extensions = yesпо умолчанию, что отключит его, wide linksесли клиент представляет собой Unix-подобную систему (как в вашем случае).

Однако, установив allow insecure wide links = yes, вы можете разрешить wide linksпараметру работать даже тогда, когда unix extensionsдействуют на подключение к общему ресурсу -Однако это не рекомендуется, поскольку небезопасно.Администратор на сервере server1 потеряет контроль над тем, что является общим, а что нет, поскольку клиенты могут попытаться получить доступ к любому файлу за пределами общего ресурса Samba, просто создав подходящую символическую ссылку на общий ресурс, если он доступен для записи, а затем все будет зависеть только от того, имеет ли учетная запись пользователя, используемая для подключения, разрешения на чтение файла или нет.

По сути, allow insecure wide links+ wide links+ unix extensions+ общий ресурс, доступный для записи клиентом, практически эквивалентен простому обмену /с Samba. Не рекомендуется.

Связанный контент