Взаимодействие 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, там заполняются
Share Access и
Desired Access
wineserver: файл fd.c, функция check_sharing
Ссылок на эту страницу нет