Як змусити самбу слідувати за символьним посиланням поза спільним шляхом


61

Це сервер 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, тому я думаю, що самба обмежує переходити з посиланням назовні / над загальним каталогом.

Редагувати:

Дивіться також це питання під назвою Ubuntu + остання версія самби, посилання більше не працюють на спільно встановленому в Windows .

Здається , найкраще помістити unix extensions = noв глобальну секцію і follow symlinks = yesі wide links = yesтільки в розділ акції, де це дійсно необхідно.

unix extensionПрапор повинен жити в глобальному розділі , а не в окремих секціях акцій. Але з міркувань безпеки краще використовувати інші варіанти лише там, де це потрібно, а не глобально.


Чи можете ви спробувати жорстке посилання замість символьного посилання?
Фальмарі

Відповіді:


92

Редагувати 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прапори: https://www.samba.org/samba/docs/using_samba/ch08.html#samba2-CHP-8-TABLE-1


Дивіться також пояснення в кінці вищезазначеного питання, чому це хороше рішення.
міт

У випадку, якщо хтось інший бореться з усіма цими коментарями, що заперечують цей досить короткий файл: скопіюйте його в резервну копію та створіть відфільтрований: 1: cp /etc/samba/smb.conf /etc/samba/smb.conf.bak2:grep -o '^[^#;]*' smb.conf.bak >smb.conf
Frank Nocke,

це [share]означає [<share_name>]?
Necktwi

@neckTwi - Це я припустив, і це працювало на мене.
Джефф

@Geoff Це не працювало для мене! перейшов наsshfs
Necktwi

11

Вітаю, я намагався ввести це в конфігурацію, щоб виправити символьні посилання для Windows для моєї настройки, але я не впевнений, чи вплине це на клієнт Windows, інакше це слід за посиланнями під час підключення до цього вікна.

[global]                                                                        
unix extensions = no

Відповідь Цій погоджується з цим: superuser.com/questions/128716 / ...
Janus

Так, це безумовно вирішує проблему в моєму оточенні.
TML

10

Альтернативно для інших відповідей, щоб увімкнути розширення unix, можна використовувати:

[global]
allow insecure wide links = yes

[share]
follow symlinks = yes
wide links = yes

це [share]означає [<share_name>]?
Necktwi

Так, це може бути будь-який розділ smb.conf, який "описує спільний ресурс (відомий як" поділитися ")" (цитується з документації). Це може бути також у спеціальному розділі [homes], де я його використовую. Детальну інформацію див. У документації .
користувач1182474

4

Щоб клієнти Samba могли слідувати посиланнями поза загальним контуром, все, що вам потрібно в конфігурації Samba, це:

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

[myShare]
wide links = yes

(окрім самих дефініцій Samba, звичайно). Цього теоретично достатньо для клієнтів * nix.

NB: Директива "слідувати посиланнями" не потрібна, оскільки вона за замовчуванням відповідає "так"

Що стосується клієнтів Windows, 1 параметр все ще відсутній, щоб вони могли переходити за такими посиланнями. Робити так :

  1. відкрийте оболонку Windows, що має права адміністратора
  2. запустити:

    fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
    
  3. перезавантажте для перезавантаження налаштувань

Примітка: той самий результат можна отримати, відредагувавши реєстр Windows. Дивіться посилання нижче

джерела:


0

Якщо у вас запущено AppArmor, вам може знадобитися вирішити більше, ніж просто файл конфігурації Samba.

Вам потрібні наступні директиви у вашому 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.