Linux: Samba, CIFS/Linux и симлинки
Недавно столкнулся с проблемой: телевизор Samsung, подключенный к домашней сети по samba (версия 3.0.34) никак не хотел видеть каталог, который был прилинкован к расшаренной папке через ln -s
Поиск в гугло-яндексе выдал похожую проблему:
и решение этой проблемы:
В старых версиях 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, настройки надо сделать следующим образом:
Да, но что делать тем, у кого самба ниже версии 3.2?
остается одно - включить unix extension на стороне клиента:
По материалам:
Samba, CIFS/Linux и симлинки
Символические ссылки (symlinks) в ресурсах samba
Все о Samba
Поиск в гугло-яндексе выдал похожую проблему:
Есть сервер 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 и показывает клиенту симлинк как симлинк. Разумеется, на клиенте этот симлинк выглядит как ссылка в никуда.
Хочется, чтобы убунтовый клиент видел симлинки на сервере как каталоги, а не как симлинки.
Есть клиент 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
Есть такой вопрос, возможно сталкивались: есть домашний ТВ Philips 47PFL4007T/60 и NAS собственной сборки на Ubuntu Server с самбой и MediaTomb в качестве DLNA-сервера. ТВ в DLNA видит мой расшаренный каталог на NASe, но в нем нет функций поиска определенных фильмов, а так как коллекция фильмов более 1000 шт., клацать лентяйкой в поиске просто убивает... Что можно придумать для реализации поиска? Пилить DLNA на ТВ наверное нет возможности...