Etersoft/samba

Материал из Etersoft wiki
Перейти к: навигация, поиск
Wackowiki-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была автоматически перемещена с old.wiki.etersoft.ru.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.


Взаимодействие Wine с CIFS-сервером

Ссылки


Документация


Устаревшее: постановка задачи

Основная задача: сообщить samba-серверу о режиме разрешения другим доступа к файлу, и получить ответ, разрешён ли доступ нам. Из этого следует, что файл должен быть открыт с соответствующими правами.


Из-за реализации открытия файлов в Linux через модуль ядра можно это это сообщить только дополнительным вызовом (при этом придётся повторно открывать файл).

Особая сложность при сообщении о доступе из wineserver - поскольку потребуется открывать файл параллельно с открытием через системный вызов.

Возможно единственный вариант передачи нужной нам информации - через блокировки.


Вариант реализации

Плюсы

Минусы

SAMBA-сервер

Будет работать с любой ОС

Проще всего в реализации - добавить обращение к libwine-etersoft и всё (нельзя из-за GPL)

Требуется сборка сервера под каждую платформу

Неправильное (временное) решение

CIFS-модуль ядра

Может работать с любым CIFS-сервером (и Windows в том числе)

Изменения в CIFS-модуле не страшно отдать под GPL

Будет работать только в Linux

Проблемы со сборкой модулей под все ядра

Всё равно менять wineserver для обращения к модулю

wineserver - реализовать в нём обращение по CIFS

Самый правильный и независимый способ, позволит в дальнейшем всю функциональность реализовать.

Самый сложный вариант, много работы

Нет проверенной клиентской библиотеки (libcli_smb) для SAMBA4 (но есть libsmbclient из SAMBA3 с необходимой функциональностью

Проблема с несовместимостью лицензий (LGPL для wineserver и GPL для libcli_smb)




SAMBA4: обработка открытия файла осуществляется в odb_tdb_open_file, откуда вызывается share_conflict для сверки shared и access.

модуль ядра cifs: CIFSSMBOpen, там заполняются ShareAccess и DesiredAccess

wineserver: файл fd.c, функция check_sharing