[email protected] — Подручные Записки

Опубликовано: 05.09.2018

отсель http://cgroup.drohobych.com.ua/index.php?option=com_content&task=view&id=113&Itemid=128&limit=1&limitstart=6

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

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

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

Никаких особенных настроек делать не требуется. Если у вас сервер уже настроен и работает с Windows-клиентами, то он будет работать и с [email protected]

Настройке 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-сервера

Конфигурационный файл сервера smb.conf обычно находится в /etc/samba.

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

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

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

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

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

[sharewine] path = /var/local/share public = yes force user = wine force group = winetester writable = yes guest ok = yes

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

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

Подготовка модуля ядра [email protected]

Начиная с версии [email protected] 1.0.9 для работы с CIFS необходимо использовать пакет etercifs версии 3.5 или выше.

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

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

# service etercifs restart

Такой ответ означает, что в данный момент имеются ресурсы, смонтированные по протоколу CIFS:

Unloading CIFS kernel module... ERROR: Module cifs is in use [FAILED] Removing CIFS kernel module... ERROR: Module cifs is in use [FAILED]

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

Unloading CIFS kernel module... [ DONE ] Loading CIFS kernel module... cifs from Etersoft is not found, you can try compile it with 'service linux-cifs build' command. [FAILED]

Перед использованием модуля ядра его необходимо скомпилировать. Если команда service etercifs restart завершилась ответом, показанным выше, необходимо собрать модуль CIFS для Вашего ядра командой service etercifs build. Для этой операции Вам потребуется компилятор GCC и заголовочные файлы ядра. Если заголовочные файлы отсутствуют, Вам будет предложено название пакета, который надо установить. Для систем Debian и Ubuntu управление сервисами производится прямым запуском скрипта /etc/init.d/etercifs. Так для сборки модуля ядра нужно выполнить команду /etc/init.d/etercifs build.

# service etercifs build

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

Build for 2.6.18-ovz-smp-alt12 Linux kernel (headers in /lib/modules/2.6.18-ovz-smp-alt12/build) Error: no kernel headers found at /lib/modules/2.6.18-ovz-smp-alt12/build Please install package kernel-headers-modules-XXXX for ALT Linux kernel-devel-XXXX for FCx / ASP Linux kernel-source-stripped-XXXX for Mandriva 2007 linux-headers for Debian / Ubuntu kernel-source-XXXX for SuSe kernel-source-XXXX for Slackware / MOPSLinux or use KERNSRC variable to set correct location Exiting...

После установки необходимого пакета с заголовочными файлами выполните команду service etercifs build ещё раз.

Build for 2.6.18-std-smp-alt6 Linux kernel (headers in /lib/modules/2.6.18-std-smp-alt6/build) We in ALT Linux, use GCC 4.1 make: Entering directory `/usr/src/linux-2.6.18-std-smp-alt6' CLEAN /usr/src/linux-cifs/.tmp_versions make: Leaving directory `/usr/src/linux-2.6.18-std-smp-alt6' make: Entering directory `/usr/src/linux-2.6.18-std-smp-alt6' CC [M] /usr/src/linux-cifs/sess.o ... LD [M] /usr/src/linux-cifs/cifs.o Building modules, stage 2. MODPOST CC /usr/src/linux-cifs/cifs.mod.o LD [M] /usr/src/linux-cifs/cifs.ko make: Leaving directory `/usr/src/linux-2.6.18-std-smp-alt6' Copying built module to /lib/modules/linux-cifs

Если присутствует строчка Copying built module to /lib/modules/linux-cifs, значит, что сборка завершилась успешно, и можно смело загружать модуль командой service etercifs restart. В итоге должно быть следующее:

Unloading CIFS kernel module... [ DONE ] Removing CIFS kernel module... [ DONE ]

При вызове build можно указать путь к заголовочным файлам ядра для сборки: KRNSRC=/usr/src/путь service etercifs build. Или только версию ядра: KERNELVERSION=2.6.26-std-pae /etc/init.d/etercifs build.

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

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

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

# mount -t cifs //<сервер>/<ресурс> <локальный каталог> \ -o user=,pass=,file_mode=0660,dir_mode=02770,uid=,gid=,iocharset=utf8

file_mode=0660 определяет необходимые права на запись/чтение файлов пользователю и указанной (через параметр gid) группе. dir_mode=2770 определяет необходимые права на запись/чтение каталогов пользователю и указанной (через параметр git) группе. iocharset=utf8 определяет кодировку отображаемых имен файлов и каталогов (должна соответствовать кодировке локали в вашей системе).

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

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

Монтирование с параметром credentials=<имя файла> позволяет считывать дополнительные параметры монтирования из указанного файла. Если user и passwd не указываются, тогда авторизация на сервере производится от имени пользователя guest. Если не указан пароль, система спросит его в любом случае.

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

$ mkdir -p ~/.wine/unc/servername $ ln -s <локальный каталог> ~/.wine/unc/servername/sharename

В результате данный ресурс будет доступен win-приложениям через UNC-путь \servernamesharename.

Соответствие версий [email protected] и CIFS

Начиная с версии [email protected] 1.0.9, для организации сетевой работы следует использовать модуль etercifs из пакета etercifs. Для совместимости с предыдущими версиями [email protected] предназначен пакет linux-cifs, содержащий совместимый вариант модуля etercifs.

При возникновении путаницы с версиями etercifs следует учитывать следующее:

Старый WINE не будет работать с пакетом etercifs, потому что модуль в нём не создаёт файл/proc/fs/cifs/Etersoft. Новый WINE отличает etercifs от linux-cifs как раз по наличию/proc/fs/cifs/Etersoft) и ведёт себя соответственно, поддерживая работу с обоими пакетами. Новый WINE по названию модуля (через файл/sys/module/etercifs/version) умеет определять, наш ли модуль cifs загружен. Начиная с определённой версии модуля cifs новый WINE (через файл/sys/module/cifs/version) будет поддерживать штатный модуль cifs из ядра.

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

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

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

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

IRC (Internet Relay Chat)
rss