Я только что столкнулся с проблемой, решения которой нигде не смог найти (например, в документации 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. Не рекомендуется.