WINE@Etersoft/Настройка совместной работы по протоколу CIFS

Материал из Русский WINE
Перейти к: навигация, поиск

Настройка совместной работы по протоколу CIFS

WINE@Etersoft позволяет настроить совместное использование файловой базы данных в гетерогенной среде. В качестве файлового сервера при этом может быть использован SAMBA 3.0.14 и выше, Windows 2000 и выше, или другой файловый сервер, работающий по протоколу CIFS. При этом используется специальный модуль ядра Linux (CIFS@Etersoft), модифицированный для корректной работы WINE. Поставляется он в пакете etercifs.

Настройка Linux/Samba-сервера для совместной работы по протоколу CIFS

Никаких особенных настроек делать не требуется. Если у вас сервер уже настроен и работает с Windows-клиентами, то он будет работать и с WINE@Etersoft.

Настройке Samba посвящено множество статей в Интернете. Вот некоторые из них:

http://www.opennet.ru/docs/RUS/samba_win2000/

http://www.linuxfocus.org/Russian/March2002/article177.shtml

http://www.citforum.ru/operating_systems/linux/samba/

Замечание: При использовании одной и той же машины в качестве файлового и терминального сервера одновременно, следует устроить так, чтобы терминальные клиенты также работали с общим ресурсом посредством протокола CIFS, иначе взаимодействия не получится.

Советы по настройке SAMBA-сервера

Как правило, SAMBA-сервер поставляется с настройками по умолчанию, которые подходят для работы WINE, но следует проверить настройки, запустив на сервере команду: testparm -v Будут выведены все текущие значения параметров. Изменить их можно в конфигурационном файле smb.conf, который обычно находится в каталоге /etc/samba.

Рекомендуется, чтобы oplocks были включены (включены по умолчанию)- это улучшит производительность в монопольном режиме. kernel oplocks (включены по умолчанию) можно выключить, это снизит нагрузку на систему (по результатам тестирования в ошибке 3147 на 100Мбитной сети скорость отличается почти на порядок) Включенные логи (log level в значении больше 0) могут в несколько раз замедлить производительность. Проверьте, что указано use sendfile = yes (ускоряет передачу больших блоков файлов).

Для SAMBA 4 потребуется указать case sensitive = yes (без него могут не открываться корректно файлы базы, см. ошибки 2822, 10043). Возможно При этом с этим сервером не смогут работать Windows-клиенты.

Какие-либо другие параметры, особенно связанные с доступом к файлам и блокировкам, использовать не рекомендуется.

Таким образом пример оптимальных настроек может быть таким:

kernel oplocks = yes level2 oplocks = no use sendfile = yes log level = 0

Остальные параметры по поводу locks/oplocks должны быть установлены по умолчанию.

Параметр strict sync включает выполнение команд по сбросу буфера на диск (flush). По умолчанию он выключен, и это ускоряет работу.

Настройка сетевого ресурса (шары) на SAMBA-сервере

В глобальных настройках следует использовать security = user.

Частой проблемой является несоответствие прав, под которым обращается самба-сервер, с правами на файлы, к которым он обращается. Например, при использовании security = share и обращении к серверу без указания пользователя/пароля он может обращаться к файлам от имени пользователя nobody или pcguest, которые вряд ли имеют права на изменение разделяемых файлов.

В примере ниже Самба с ресурсом sharewine всегда будет обращаться от имени wine к файлам в каталоге /var/local/share.

[sharewine]
   path = /var/local/share
   public = yes
   # valid users = user1 user2
   force user = wine
   writable = yes
   guest ok = yes

Обратите внимание, что пользователи должны быть добавлены в систему (командой useradd) и в SAMBA (командой smbpasswd -a USER). В файл /etc/samba/smbusers нужно вписать запись wine = wine (если используется force user = wine) для установки соответствия между SAMBA и Linux-пользователями.

Такая настройка подходит как для Linux, так и для Windows-клиентов.

Настройка Linux-клиентов для совместной работы по протоколу CIFS

Настройка происходит в два этапа: установка специального собранного модуля ядра CIFS и монтирование общего сетевого ресурса.

Поддерживаемые ядра

Модуль ядра etercifs поддерживает ядра от 2.6.18 и выше. Исключением является ядро ОС SLES10SP2, которое также поддерживается. Ряд проблем исправлен только для ядер от 2.6.25 и выше и ещё некоторая часть -- от 2.6.27 и выше. Таким образом, рекомендуется использовать ядра Linux версии от 2.6.27 и выше.

Подготовка модуля ядра CIFS@Etersoft

Свежие версии пакета etercifs можно скачать отсюда. Обратите внимание, что стабильная и проверенная версия поставляется только вместе с WINE@Etersoft, а по указанному адресу могут находится и другие версии, находящиеся в разработке. Начиная с версии WINE@Etersoft 1.0.9 для работы с CIFS необходимо использовать пакет etercifs версии 4.3.6 или выше. Начиная с версии WINE@Etersoft 1.0.11 для работы с CIFS необходимо использовать пакет etercifs версии 4.3.8 или выше. Начиная с версии WINE@Etersoft 1.0.12 для работы с CIFS необходимо использовать пакет etercifs версии 4.5.0 или выше.

Для корректной совместной работы необходимо установить пакет etercifs и задействовать модуль CIFS ядра Linux.

Note: Если имеются смонтированные по протоколу CIFS сетевые ресурсы, необходимо прежде их размонтировать командой
# umount <точка монтирования>


Просмотреть список смонтированных ресурсов можно командой mount. После успешного размонтирования необходимо собрать модуль под текущее ядро и загрузить его.

Для этого нужно выполнить команду service etercifs restart. При этом скрипт при наличии загруженного модуля выгружает его, затем пытается загрузить и, если не находит, то запускает скрипт сборки. И после того, как модуль будет успешно собран, автоматически произойдет его загрузка.

# service etercifs restart

Если вы обновили пакет, но не пересобрали модуль, то старый модуль грузиться не будет и вы увидите сообщение:

Loading CIFS kernel module...     [FAILED]
    package etercifs version 4.3.4
    kernel module etercifs version 4.1.2 is built for current kernel
    WARNING!!! Versions of package etercifs and built module etercifs DON'T MATCH!!!
    Please, run 'service etercifs build' to build the etercifs module (recommended)"
    or run 'CHECK_VERSION=0 service etercifs restart' to disableing check."

То есть рекомендуется пересобрать модуль. А чтобы загрузить старый модуль при наличии нового пакета (например в том случае, если новый модуль не удается скомпилировать) нужно выполнить команду:

# CHECK_VERSION=0 service etercifs restart

Если вы не хотите, чтобы такая проверка осуществлялась, то измените значение переменной CHECK_VERSION в файле /etc/etercifs.conf на CHECK_VERSION=0, раскомментировав строку.

Для сборки модуля ядра Вам потребуется компилятор GCC (пакеты gcc и make) и заголовочные файлы ядра. Если заголовочные файлы отсутствуют, Вам будет предложено название пакета, который надо установить.

Ответ такого вида означает отсутствие заголовочных файлов ядра, необходимых для сборки модуля CIFS@Etersoft для Вашего ядра.

Building for 2.6.27-std-def-alt1 Linux kernel (headers in /lib/modules/2.6.27-std-def-alt1/build)
Error: no kernel headers found at /lib/modules/2.6.27-std-def-alt1/build
Please install package
    kernel-headers-modules-XXXX for ALT Linux
    kernel-XXXX-devel for FCx / ASP Linux
    dkms-etercifs for Mandriva 2009
    linux-headers-XXXX for Debian / Ubuntu
    kernel-source-XXXX for SuSe
    kernel-source-XXXX for Slackware / MOPSLinux
or use KERNSRC variable to set correct location
Exiting...

Если в данный момент имеются ресурсы, смонтированные по протоколу CIFS и занятые каким-либо процессом, то мы увидим такое сообщение:

Unmounting CIFS resources... unmount error 16 = Device or resource busy
Refer to the umount.cifs(8) manual page (man 8 umount.cifs)    [FAILED]
Unloading CIFS kernel module... ERROR: Module etercifs is in use    [FAILED]

Если занятых ресурсов, смонтированных по протоколу CIFS нет, то после запуска команды service etercifs restart мы должны увидеть примерно следующее:

Unmounting CIFS resources...    [ DONE ]
Unloading CIFS kernel module...    [ DONE ]
Loading CIFS kernel module... FATAL: Could not open '/lib/modules/2.6.27-std-def-alt1/kernel/fs/cifs/etercifs.ko': No such file or directory
etercifs from Etersoft is not found, trying to compile it...
Building for 2.6.27-std-def-alt1 Linux kernel (headers in /lib/modules/2.6.27-std-def-alt1/build)
Use GCC 4.3
/usr/bin/gcc-4.3
...
...
...
make: Leaving directory `/usr/src/linux-2.6.27-std-def-alt1'
Copying built module to /lib/modules/2.6.27-std-def-alt1/kernel/fs/cifs
Loading CIFS kernel module...    [ DONE ]

Если присутствует строчка Copying built module to /lib/modiles/..., значит, что сборка завершилась успешно, а присутствие строчки Loading CIFS kernel module... [ DONE ] означает, что собранный модуль успешно загружен.

Note: Для систем Debian и Ubuntu управление сервисами производится прямым запуском скрипта /etc/init.d/etercifs. Так для сборки модуля ядра нужно выполнить команду /etc/init.d/etercifs restart.


Вышеописанные команды можно производить по-отдельности, например, чтобы осуществить только сборку модуля ядра CIFS нужно выполнить команду service etercifs build

Командой service etercifs status можно проверить статус модуля. Если загружен модуль etercifs, то мы увидим следующее сообщение:

CIFS module status:
    package etercifs version 4.2.1
    kernel module etercifs version 4.2.1 is built for current kernel
    kernel module etercifs version 4.2.1 is loaded

Первая строчка отображает версию пакета etercifs, вторая -- версию собранного модуля ядра, третья -- версию загруженного модуля ядра. Если модуль etercifs не загружен либо версия собранного или загруженного модуля не совпадает с версией пакета, вы увидите сообщение об этом:

CIFS module status:
    package etercifs version 4.2.1
    kernel module etercifs version 4.2.1 is built for current kernel
    kernel module etercifs version 4.2.0 is loaded
    WARNING!!! Versions of package etercifs and loaded module etercifs DON'T MATCH!!!

В таком случае требуется перезагрузить модуль командой service etercifs restart.

CIFS module status:
    package etercifs version 4.2.1
    kernel module etercifs version 4.2.0 is built for current kernel
    WARNING!!! Versions of package etercifs and built module etercifs DON'T MATCH!!!
    kernel module etercifs version 4.2.0 is loaded
    WARNING!!! Versions of package etercifs and loaded module etercifs DON'T MATCH!!!

В таком случае требуется собрать модуль командой service etercifs build и затем перезагрузить командой service etercifs restart.

CIFS module status:
    WARNING!!! Kernel module etercifs is not loaded!
    Possible ERRORS when working with WINE!

В таком случае требуется запустить модуль командой service etercifs start и затем снова запустить команду service etercifs status для проверки.

Полный список параметров для etercifs:


  • status: проверка состояния модуля
  • start: загрузка модуля etercifs (если модуль отсутствует, то запускается сборка)
  • stop: выгрузка модуля etercifs
  • restart: последовательный запуск команд stop и start
  • build: запуск скрипта сборки модуля


При сборке модуля можно указать версию ядра, отличного от текущего, для которого требуется собрать модуль (для него должны быть установлены заголовочные файлы ядра):

KERNELVERSION=2.6.26-wks-smp-alt1 /etc/init.d/etercifs build

В некоторых системах доступна технология DKMS (Dynamic Kernel Module Support), а для свежих версий Mandriva сборка модуля ядра производится только с использованием DKMS. Для такого варианта сборки нужно поставить пакет dkms-etercifs. Сборка и загрузка модуля будут запущены автоматически после установки данного пакета.

Если в системе доступны оба способа сборки, то для выбора варианта сборки без DKMS необходимо запустить команду с параметром DKMS=0

DKMS=0 /etc/init.d/etercifs build

Монтирование сетевого ресурса

Сетевой ресурс можно монтировать либо для каждого пользователя персонально (тогда права доступа будут определяться сервером), либо для всех сразу- при условии что пользователи на локальной машине входят в одну группу, указанную при монтировании (доступ к ресурсу станет определяться местными настройками), а также без контроля прав. Примеры монтирования приведены ниже. Вам потребуется установить пакет, содержащий команду mount.cifs. Например, для систем на основе Debian/Ubuntu она находится в пакете smbfs, для ALTLinux- в пакете samba-client.

Программы Windows, запущенные в WINE, требуют особого поведения блокировок файлов на сетевых файловых системах. Для их корректной работы нужно указать дополнительный параметр монтирования forcemandatorylock (он же forcemand). Этот параметр монтирования использует блокировки в стиле DOS/Windows (mandatory блокировки) вместо блокировок в POSIX-стиле (advisory блокировки) даже если расширения Unix включены.

Note: Монтировать сетевые ресурсы, предназначенные для использования в WINE, рекомендуется с параметром монтирования wine, включающим в себя все необходимые параметры.


В версии 1.57 CIFS (начиная с ядра 2.6.29) расширено действие команды fsync, когда теперь приводит не только к передаче данных на сервер, но и ожидает окончания их записи на диск. В зависимости от настроек сервера (в SAMBA есть выключенный по умолчанию параметр strict sync, управляющий синхронизацией данных), новое поведение fsync может привести с существенному замедлению при записи. Монтирование с параметром nostrictsync отключает новое поведение, отключая ожидания окончания записи на диск.

Монтирование CIFS-ресурса для использования Linux-программами и для использования в Wine отличается.

Для монтирования удалённого CIFS-ресурса, предназначенного для Wine, необходимо с правами пользователя root выполнить команду:

# mount -t cifs //<сервер>/<ресурс> <локальный каталог> \
    -o user=<workgroup/user>,pass=<passwd>,file_mode=0660,dir_mode=02770,uid=<user>,gid=<group>,iocharset=utf8,wine,nounix
file_mode=0660 определяет необходимые права на запись/чтение файлов пользователю и указанной (через параметр gid) группе. dir_mode=2770 определяет необходимые права на запись/чтение каталогов пользователю и указанной (через параметр gid) группе. iocharset=utf8 определяет кодировку отображаемых имен файлов и каталогов (должна соответствовать кодировке локали в вашей системе).

Если монтировать с параметром noperm, права доступа к файлам будут проверяться на сервере, а не на локальном компьютере (это поможет избежать проблем при несовпадении UID и GID на сервере и локальной машине). Если разграничение доступа к базе не очень важно, это наиболее удобный вариант для совместной работы разных терминальных пользователей с базой. Если вы не уверены, нужен ли вам параметр монтирования noperm, то следует его установить!

# mount -t cifs //<сервер>/<ресурс> <локальный каталог> -o user=<workgroup/username>,pass=<password>,noperm,wine,nounix

Если user и pass не указываются, тогда авторизация на сервере производится от имени пользователя guest. Если не указан пароль, система спросит его в любом случае.

После этого следует создать новый виртуальный диск-каталог в ~/.wine/dosdevices, который будет указывать на локальный каталог, куда смонтирована файловая система.

Монтирование для использования в Linux (например, для домашнего каталога, или для (совместной) работы с файлами OpenOffice отличается параметрами монтирования: не нужно указывать параметры wine,nounix.

Утилита монтирования etermount

Утилита etermount осуществляет монтирование сетевого ресурса по протоколу cifs с предустановленным набором параметров: user=guest,pass=,rw,iocharset=utf8,noperm,wine,nounix, который задан переменной MOUNT_OPTIONS в файле /etc/etercifs.conf. Чтобы смонтировать ресурс //server/share в точку монтирования /path/mountpoint нужно выполнить команду:

# etermount //server/share /path/mountpoint

Если точка монтирования не указана, то по умолчанию она имеет значение, указанное в переменной DEFAULT_MOUNTPOINT в файле /etc/etercifs.conf.

Монтирование сетевого ресурса при загрузке системы

Для автоматического монтирования ресурса по протоколу CIFS при загрузке системы нужно вписать соответствующую строку в файл /etc/fstab. Обратите внимание, что при использовании доступа по паролю важно использовать файл credentials, в котором указывается имя пользователя и пароль, чтобы не хранить пароль в самом /etc/fstab (поскольку /etc/fstab доступен для чтения пользователям и это небезопасно).

//192.168.33.1/pub /mnt/server cifs credentials=/etc/credentials,rw,iocharset=utf8,noperm,wine,nounix 0 0

username=guest password=

Note: Рекомендуемые права доступа для файла /etc/credentials- 0600, то есть файл не должен быть доступен пользователям на чтение. Такие права можно установить командой chmod 600 <имя файла>.


Поскольку сначала происходит монтирование ресурсов, указанных в fstab, а уже потом загрузка модуля etercifs, то в общем случае нельзя гарантировать, что набор действий отмонтирование ресурсов CIFS, выгрузка модуля ^cifs^, загрузка модуля ^etercifs^ и монтирование ресурсов CIFS завершится корректно. Если вдруг после первого монтирования по каким-то причинам некий процесс занимает примонтированный ресурс, то отмонтирования не произойдёт, соответственно, драйвер не выгрузится.

Использование модуля ядра CIFS@Etersoft в системах Slackware и MOPSLinux

Для того, чтобы после перезагрузки модуль etercifs грузился автоматически, а также, чтобы все ресурсы, прописанные в файле fstab, автоматически монтировались, надо в файл /etc/rc.d/rc.local добавить следующие строки в конец файла:

#Start etercifs service
if [ -x /etc/rc.d/init.d/etercifs ]; then
  /etc/rc.d/init.d/etercifs start
  mount -a -t cifs
fi

Использование устаревшего модуля smbfs ядра Linux

Для ядер 2.4.x, для которых нет работающего CIFS, возможно использование модифицированного модуля smbfs (с добавленной поддержкой блокировок) для организации совместной работы в режиме, аналогичном работе на NFS. Нами подготовлен патч, добавляющий поддержку блокировок в ядро 2.4.32, в рамках поддержки ОС МСВС. Этот режим доступен по специальному запросу.

Использование других реализаций CIFS-клиентов

Для работы с WINE требуется модифицированный код поддержки CIFS, в настоящий момент доступный только для ядер Linux. Реализации во FreeBSD и Solaris пока не поддерживаются.

Использование других реализаций CIFS-серверов

Протестирована работа только с SAMBA-сервером и Windows-сервером. Реализация CIFS-сервера в Solaris не проверялась.

Настройка Windows-сервера для совместной работы по протоколу CIFS

Настройка и организация ресурса стандартна и реализуется через Общий доступ к файлам и папкам. Важно не забыть указать права доступа к общему ресурсу и файлам. Если авторизация проходит через AD, необходимо установить параметр Network Microsoft Server: Digitally sign communications (always) - Disable в групповой политике.

Оригинальная документация от Microsoft

Использование томов NetWare для совместной работы

Note: Внимание! Данный способ пока не проверен и не поддерживается!


Для монтирования томов NetWare в файловую систему Linux используется протокол IPX. Монтирование осуществляется командой ncpmount:

# ncpmount -S SERVER -U user -P password /mnt/base

Эта команда смонтирует все тома сервера SERVER в каталог/mnt/base под NetWare-логином user с паролем password.

Подробнее можно почитать здесь

Wine
Search.png
Программы работающие в WineСкачатьШкольный Wine
WINE@Etersoft Общие сведенияУстановка на 64-битные ОСОсобенности разработкиПатчи для WINE@EtersoftАдминистративная установкаДополнительные компонентыКак получить WINE@Etersoft?Лицензия на документациюГлоссарийИспользование аппаратных ключей защиты в LinuxДополнительная информация • [ Совместная работа | по CIFSпо NFS ] • Изменение системных ограниченийРегистрация продуктаПошаговая инструкция по установке rpm-пакетовОбращение в службу поддержкиТерминальные решенияУстановка WINE@EtersoftПодписка на обновленияНастройка WINE@EtersoftРазработчикуEnterpriseЧто такое WINE@Etersoft SQLВозможностиСреда для запуска приложений WindowsИспользование WINE@EtersoftFAQ по использованию WINE@EtersoftОсновные командыWINE@Etersoft/LocalЧто такое WINE@Etersoft Local
Программы Запуск БЭСТ 4+Запуск Консультант+ (сетевой версии)ГарантF1Инфо-Бухгалтер 8.xНалогоплательщик ЮЛ
1C Отличия от обычного WineМестоположение базы 1С1C: Предприятие 7.7 в WINEНастройка 1С 7.7 для работы с SQL-серверомУстановка 1С: Предприятия 8.1Установка 1С: Предприятия 8.1 в трёхзвенном режиме
Пользователю
Помощь Использование WinecfgИспользование Regedit
Легальность DCOM95IE5DCOMMSXML
Утилиты для работы с Wine WinetricksWineToolsQ4WinePlayOnLinuxIEs4LinuxWine-DoorsSwine
Разработчику
Компоненты WindowsЗапрет отключения защиты программыУправление обработчиком исключенийStraceNTИзмерение скорости функций WinAPIGLУстройство чтения смарт-картПрофилированиеТесты для проверки интерфейсовНаписание тестов в системе WineАутентификация в домене ADРепозитории
Помощь Создание патчейНаписание приложения под wineОтправка патчейСборка eterhackСборка wine-public
Отладка Способы отладкиWINEDEBUGWinedbg
Разработка WINE
1CODBCWinHelpКомпасМетодикаТестирование доступаЦветаФайловый диалогТестированиеЛитератураИзображенияWin32ШрифтыФайловые блокировкиСсылкиКлючи защитыRPMWineGeckoListViewУпаковка Wine
Производителю
Родственные проекты
LUKReactOSARWINSSCrossOver
Прочее
PageSetupDlgFreeBSDWwr