S3.Blog

21 Ноября 2024
A A A   RSS-лента
"Я знаю, что ничего не знаю, но многие не знают и этого". Сократ [?].

Linux: Samba, CIFS/Linux и симлинки

Дата последнего изменения: 10 Февраля 2012
Метки статьи: Фиксы & Хаки, Linux
Недавно столкнулся с проблемой: телевизор Samsung, подключенный к домашней сети по samba (версия 3.0.34) никак не хотел видеть каталог, который был прилинкован к расшаренной папке через ln -s
 


Поиск в гугло-яндексе выдал похожую проблему:

Есть сервер debian sarge с самбой 3.0.14a-3sarge11.
Есть клиент ubuntu gutsy с CIFS smbfs_3.0.26a-1ubuntu2_amd64

На сервере есть каталог, расшаренный по самбе. В каталоге есть симлинк за пределы этого каталога, в другую файловую систему, через самбу (напрямую) не доступную. Я его монтирую командой sudo mount -t cifs \\\\server\\share localdir -oiocharset=utf8
С виндовых клиентов симлинк выглядит как каталог и содержимое другой файловой системы доступно.
С убунту, CIFS договаривается с самбой о поддержке CIFS Unix extensions и показывает клиенту симлинк как симлинк. Разумеется, на клиенте этот симлинк выглядит как ссылка в никуда.
Хочется, чтобы убунтовый клиент видел симлинки на сервере как каталоги, а не как симлинки.


и решение этой проблемы:

В старых версиях Samba symlink мог ссылаться на любой файл сервера. В новых версиях (начиная с версии 3.2) это поправлено для исключения symlink-атак (http://www.samba.org/samba/news/symlink_attack.html).

Из-за этого исправления очень часто, при настройке шар самбы, новички спотыкаются на этих симлинках. Их или не видно или они не работают (ведут куда-то не туда).
Все дело в том, что у Samba есть целых ТРИ режима работы с симлинками, причем 2 из них - взаимоисключающие.
Первый параметр отвечающий за режим работы с симлинками это follow symlinks. Если он не разрешен, самба вообще не отображает ссылки.

Второй и третий параметры - отвечают за то кто обрабатывает симлинки - сервер Samba или клиентская машина. Их две: wide symlinks и unix extensions. Первая включает режим обработки симлинков сервером, это режим для работы с Windows клиентами. Второй - включает режим работы с Unix клиентами, когда с симлинками разбирается клиент. Если они оба включены, то предпочтение отдается unix extensions, а он включен "по умолчанию".

Исходя из вышесказанного, для типичной ситуации, когда клиенты - это компьютеры с windows, настройки надо сделать следующим образом:
[global]
    unix extensions = no
    ...

[имя_ресурса]
    follow symlinks = yes
    wide symlinks = yes
    ...


Да, но что делать тем, у кого самба ниже версии 3.2?

остается одно - включить unix extension на стороне клиента:

// входим в root-зону
$ sudo -i

// если отсутствует каталог /proc/fs/cifs/ то выполняем modprobe
# modprobe cifs

// выключаем unix extension
# echo 0 > /proc/fs/cifs/LinuxExtensionsEnabled

// монтируем самба-шару
# mount ....


По материалам:
Samba, CIFS/Linux и симлинки
Символические ссылки (symlinks) в ресурсах samba
Все о Samba




Похожие материалы:




GrumbaL (гость) • ответить
Доброго времяни суток, Александр.
Есть такой вопрос, возможно сталкивались: есть домашний ТВ Philips 47PFL4007T/60 и NAS собственной сборки на Ubuntu Server с самбой и MediaTomb в качестве DLNA-сервера. ТВ в DLNA видит мой расшаренный каталог на NASe, но в нем нет функций поиска определенных фильмов, а так как коллекция фильмов более 1000 шт., клацать лентяйкой в поиске просто убивает... Что можно придумать для реализации поиска? Пилить DLNA на ТВ наверное нет возможности...
Александрответить
если функции поиска изначально нет в телевизоре, то вам ничего не поможет, кроме каких-то самодельных апдейтов прошивки именно для вашей модели телевизора

 
 
  Имя *:   Решите пример *: =
 
Полужирный Курсив Подчеркнутый Перечеркнутый
 
Вставить изображение Сделать цитатой Вставить ссылку Вставить код

Вставить смайл
 
 

 



© S3.Blog: Если критикуешь, не предлагая решения проблемы, то ты становишься частью этой проблемы.