it-swarm-ru.tech

Как заставить samba следовать символической ссылке за пределами общего пути

Это сервер Ubuntu 10.04 64 и samba 3.4.7.

У меня есть общий каталог /home/mit/share и еще один /home/temp что я связываю в общий:

ln -s /home/temp /home/mit/share/temp

Но в Windows после использования Интернета я не могу открыть S:/temp, но в Linux можно получить доступ к /home/mit/share/temp как ожидалось.

Это работает, если я связываю каталоги внутри /home/mit/share/temp, поэтому я предполагаю, что samba запрещает переходить по ссылке за пределами/над общим каталогом.

EDIT:

Смотрите также этот вопрос под названием buntu + последняя версия samba, символические ссылки больше не работают на общем ресурсе, смонтированном в Windows .

Кажется, лучше поставить unix extensions = no в глобальный раздел и follow symlinks = yes а также wide links = yes только в раздел акций, где вам это действительно нужно.

unix extension флаг должен находиться в глобальном разделе, а не в отдельных разделах общего ресурса. Но по соображениям безопасности лучше использовать другие варианты только там, где это необходимо, а не глобально.

65
mit

Правка smb.conf

[global]
unix extensions = no

[share]
follow symlinks = yes
wide links = yes

Примечание. Если вы используете более новую версию samba, вам может подойти следующее:

[global]
allow insecure wide links = yes

[share]
follow symlinks = yes
wide links = yes

документация по follow symlinks а также wide links flags: https://www.samba.org/samba/docs/using_samba/ch08.html#samba2-CHP-8-TABLE-1

102
Mahesh

В качестве альтернативы другим ответам, чтобы оставить включенными расширения Unix, можно использовать:

[global]
allow insecure wide links = yes

[share]
follow symlinks = yes
wide links = yes
11
user1182474

Приветствую, я попытался поместить это в конфигурацию, чтобы исправить символические ссылки для окон для моей установки, но я не уверен, повлияет ли это на клиент Windows, в противном случае он будет следовать символическим ссылкам при подключении к этому блоку.

[global]                                                                        
unix extensions = no
11
Qiqi

Чтобы позволить клиентам Samba следовать символическим ссылкам за пределами общего пути, все, что вам нужно в конфигурации Samba:

[global]
allow insecure wide links = yes
unix extensions = no

[myShare]
wide links = yes

(в дополнение к самбе, конечно, разделяет определения). Этого теоретически достаточно для клиентов * nix.

NB. Директива follow symlinks не обязательна, по умолчанию используется значение yes

Что касается клиентов Windows, 1 настройка все еще отсутствует, чтобы позволить им переходить по таким ссылкам Для этого:

  1. откройте оболочку Windows с правами администратора
  2. запустить :

    fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
    
  3. перезагрузить, чтобы перезагрузить настройки

Примечание: тот же результат можно получить, отредактировав реестр Windows. Смотрите ссылки ниже

источники:

4
Httqm

Вам может потребоваться обратиться не только к файлу конфигурации Samba, если вы используете AppArmor.

Вам нужны следующие директивы в вашем smb.conf:

follow symlinks = yes
wide links = yes
unix extensions = no
# No need for "allow insecure wide links" unless you want "unix extensions = yes"

Но AppArmor блокирует доступ к частям файловой системы в соответствии со своей семантикой набора правил. Итак, если ваша символическая ссылка в Samba указывает на местоположение, которое AppArmor заблокирует, Samba запретит доступ.

В моей системе Samba обновляет профили AppArmor при запуске/остановке службы, поэтому я могу изменить профиль AppArmor, но рискую перезаписать Samba или другую программу. Вместо этого я решил создать недоступный общий ресурс в Samba, ссылающийся на местоположение, в котором находилась цель символической ссылки, к которой я хотел получить доступ (все еще в smb.conf):

# The following is a hack for AppArmor to allow the path
[share1 for AppArmor] # Or whichever name you choose
    browseable = no
    path = /home # Point to directory or parent directory of the location to access
    read only = yes
    guest ok = no
    valid users = none
0
palswim