Каталог решений - SAMBA для 1С

SAMBA для 1С

SAMBA для 1С

В наличии

Представлен необходимый минимум настройки SAMBA для работы файловых баз 1С через общий ресурс.

Категория:

Описание

Данную статью можно рассматривать как дополнение к публикации: Xubuntu 20.04 для бухгалтера 1С.

Цель: настроить сервер SAMBA на UBUNTU для файловых баз 1С.

 

Задачи:

1. установить SAMBA,

2. настроить SAMBA для работы баз 1С,

3. протестировать и сравнить работу 1С в Windows и Linux с общим ресурсом на Samba и на Windows.

 

1. Установка SAMBA

Samba — это пакет программ, которые предоставляют общий доступ к файлам и принтерам сетей Microsoft по протоколу SMB/CIFS. Для его установки необходимо выполнить следующую команду:

sudo apt install samba

 

 

На вопрос «Хотите продолжить? [Д/н]» нажимаем Д или Y .

Дальше продолжается скачивание и установка всех необходимых пакетов программ.

В итоге должна быть установлена клиентская и серверная части Samba.

Если не устанавлен Midnight Commander , то

sudo apt install mc

В Ubuntu следует изменить лимит на количество одновременно открытых файлов, в Linux это 1024, а в Windows16384. Для этого в файле /etc/security/limits.conf

 

 

нужно добавить две строки в конец:

* — nofile 16384

root — nofile 16384

 

 

После нажатия [Esc], сохраняем файл:

 

 

Файловая система должна быть ext4, btrfs или xfs. Будем использовать по умолчанию в Ubuntu — ext4 с размером блока не менее 4096 байт (4кб), а лучше 8192 байта для платформ 1С выше 8.3.8.

Чтобы просмотреть размер блока для файловой системы ext4 раздела /home нужно выполнить команду:

stat -f /home

Получим следующий результат, который показывает размер блока 4096 байт:

 

 

Перезагружаемся:

sudo reboot

 

2. Настройка анонимного SAMBA для работы баз 1С

Чтобы настроить нужно отредактировать файл /etc/samba/smb.conf.

 

 

Для нормальной работы сервера SAMBA не стоить менять большинство дефолтных настроек в этом файле. Изменим лишь небольшую часть.

Есть два вида комментариев:

если используется символ # — то указанное значение применяется по умолчанию,

символ ; обозначает предлагаемый вариант настройки.

smb.conf имеет три зарезервированные секции:

[global] — определяет опции, которые распространяются на все остальные секции, если в них явно не указано обратное.

[homes] — предоставляет удаленным пользователям доступ к своим (и только своим) домашним директориям. Если пользователи подключаются к сетевому ресурсу (адрес smb://server/username/ или \\server\username), то будут подключены к персональным домашним директориям, закрепленным как "домашний каталог" за пользователем, под учетной записью которого они зарегистрировались на samba-сервере. Чтобы удаленный пользователь мог авторизоваться на samba-сервере, необходимо добавить соответствующего пользователя в систему (useradd) и создать samba-пароль для этого пользователя (smbpasswd), который может отличаться от системного (passwd).

[printers] — отвечает за определение опций доступа к принтеру по сети.

Остальные секции, например [1CBases] будут соответствовать общим папкам, т.е. клиент на данном компьютере увидит общую папку 1CBases с правами, описанными в данной секции.

Начнем с глобальной секции [global], параметры которой применяются для всех сервисов.

Сначала следует указать версии протокола smb, с которыми будут работать Samba-сервер (Windows7 — Windows10) и клиенты:

sever min protocol = SMB2

server max protocol = SMB3

client min protocol = SMB2

client max protocol = SMB3

Задать имя рабочей группы Windows, по умолчанию WORKGROUP.

workgroup = WORKGROUP

 

 

Следующая опция определяет интерфейсы или подсети, с которыми будет работать Samba. Допускается смешанная запись либо можно указать только интерфейсы:

 

 

Само по себе указание интерфейсов не ограничивает Samba, для ограничений нужно включить следующую опцию:

 

 

Не будем менять дефолтные настройки.

Следующая опция

server role = standalone server

обозначает простой файловый сервер, не требующий подключения к домену.

 

 

Такая опция

map to guest = bad user

определяет способ гостевого доступа. При указанном значении гостем будет любой пользователь, который отсутствует в базе Samba. Также могут использоваться значения never — не использовать гостевой доступ и bad password — гостем будет считаться в том числе и существующий пользователь, если он неправильно введет пароль. Данное значение использовать не рекомендуют, так как при ошибке в пароле пользователь все равно получит доступ с гостевыми правами.

Чтобы создать общий ресурс, доступ к которому может иметь любой пользователь, нужно добавить в конец файла /etc/samba/smb.conf следующие строки:

[1CBases]

;locking = no

;oplocks = false

;level2 oplocks = false

comment = Shared for all

path = /home/user0/1CBases

read only = no

guest ok = yes

force create mode = 0777

force directory mode = 0777

 

 

 

 

 

 

 

 

В квадратных скобках имя ресурса, все что ниже скобок — секции этого ресурса.

locking = no — сервер не будет удовлетворять запросы блокировок от клиентов: все запросы на блокирование и разблокирование будут казаться клиенту прошедшими успешно;

oplocks = false — не генерировать блокировки oplocks (гибкие блокировки) в ответ на запрос открытия файла в открытой для доступа директории, отключает беспощадную буферизацию файлов на клиентах и повышает надежность, но снижает скорость;

level2 oplocks = false — рекомендуется, чтобы этот параметр был выключен при выключенном предыдущем параметре;

comment — описание ресурса, необязательный параметр;

path — путь к директории;

read only — режим только чтения, указываем no;

guest ok — разрешен ли гостевой доступ, указываем yes;

force create mode — чтение и запуск файлов разрешены без учета прав доступа DOS;

force directory mode — то же самое для папок.

Locking, oplocks, level2 oplocks — закомментированы, чтобы быстрее работала 1С, если будут проблемы с блокировками при многопользовательской работе, то нужно убрать комментарии.

Создадим саму директорию:

mkdir /home/user0/1CBases

установим на нее необходимые права — для гостевого ресурса это 777:

chmod 777 /home/user0/1CBases

Если нужна "расшаренная" папка на отдельном диске, то следует примонтировать этот диск, например, к папке 1CBases. В большинстве случаев достаточно упрощенной команды:

sudo mount /dev/sda1 /home/user0/1CBases

 

 

Посмотреть названия дисков и uuid для разделов можно так:

blkid

 

 

Далее необходимо установить права для гостевого доступа:

chmod 777 -R /home/user0/1CBases

 

 

Если в дальнейшем 1С не будет запускаться с базой из этой папки, то нужно будет отредактировать файл /etc/fstab для автомонтирования диска к папке /home/user0/1CBases. В опциях монтирования нужно указать user — что разрешает монтирование от лица обычного пользователя:

 

 

По умолчанию (если не указано иное) Samba для записи на общий ресурс использует 0744 для файлов и 0755 для директорий. Т.е. полный доступ остается только у владельца файла, остальные получают права только на чтение. Чтобы исправить это следует явно указать режим для новых файлов и папок, для этого используются строки:

create mode = 0777

directory mode = 0777

В этом случае итоговые права с учетом отображения прав доступа DOS в разрешения UNIX имеют особенности, в частности права на файлы устанавливаются как 766 или rwx-rw-rw. Поэтому запустить исполняемый файл сможет только тот, кто является его владельцем. Остальные получат сообщение об отсутствии прав доступа:

 

 

На неисполняемые файлы это никак не влияет. Если необходимо разрешить запуск, то вместо create mode следует использовать опцию force create mode, которая будет устанавливать разрешения без учета прав доступа DOS:

force create mode = 0777

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

create mode = 0666

Данная опция полностью снимет права на выполнение для всех, но оставит полный доступ к исполняемым файлам.

Для тестирования настроек нужно набрать в командной строке, находясь в директории /etc/samba:

testparm

Если все нормально, то будет выдано ok.

Далее следует перезагрузить Samba-сервер:

sudo service smbd restart

 

Чтобы доступ к общей папке был по имени узла и в дальнейшем не было замедлений работы с файлами из общей папки, необходимо в файл на Windows 7 (для другой версии Windows путь может отличаться)

c:\Windows\System32\drivers\etc\hosts

добавить строчку:

192.168.254.253          lubx64

где lubx64 — сетевое имя нашего файлового сервера.

В linux файл находится обычно в /etc/hosts. Там добавляется строка такого же формата, как и в Windows.

Для ускорения работы не должно быть файервола и антивируса на Samba-сервере.

Перед началом работы желательно протестировать сеть с сервером Samba. В Windows нужно выполнить команду в терминале:

ping lubx64 -l 4096

а в linux:

ping lubx64 -S 4096

В ответ не должно быть получено что-то вроде:

Request time out

В итоге имеем настроенный Samba-сервер на компьютере lubx64 без авторизации с доступной всем для чтения и записи в сети общей папкой 1CBases.

 

3. Тестирование работы файловых баз 1С на Samba

Для проверки работы баз 1С в файловом режиме на Samba-сервере используем тест Гилёва для платформы 8.3 http://www.gilev.ru/1c/tpc/GILV_TPC_G1C_83.dt.

Характеристики Samba-сервера:

процессор — Intel Core i5 2700 МГц, оперативка — 16 Gb, HDD — WD800AAJS 80Gb (2007 год выпуска), сеть — Realtek 1Гбит/с, ОС — Lubuntu 20.04 x64.

Характеристики клиента:

VirtualBox6.0, процессор — Intel Pentium 4415U 2300 МГц, оперативка — 3 Gb, виртуальный SSD — WD Blue 3D NAND 1 Tb, сеть — Intel Pro/1000 MT 1Гбит/с, ОС — Windows 7 x32.

Тест с локальной базой на клиенте показал результат 34.01, что хорошо:

 

 

Тест с базой на Samba-сервере выдал результат 30.86, что на 3.15 меньше предыдущего, что тоже хорошо:

 

 

Далее выполним тест на хостовой машине-клиенте Linux Ubuntu 16.04 с характеристиками:

процессор — Intel Pentium 4415U 2300 МГц, оперативка — 8 Gb, виртуальный SSD — WD Blue 3D NAND 1 Tb, сеть — Realtek 1Гбит/с, ОС — Ubuntu 16.04 x64.

Тест с локальной базой на клиенте linux показал результат 45.45, что ближе к «замечательно»:

 

 

Для подключения сетевой папки Samba-сервера на linux-клиент надо установить пакет cifs-utils:

sudo apt-get install cifs-utils

и выполнить команду подключения:

sudo mount -t cifs //lubx64/1CBases /home/user0/Samba -o username=guest,password=,iocharset=utf8,file_mode=0777,dir_mode=0777

 

 

Таким образом подключается папка /1CBases с сервера lubx64 в каталог пользователя локальной системы /home/user0/Samba.

При использовании данной команды без явного указания протокола используется версия протокола smb1, если в smb.conf указано

sever min protocol = NT1 и client min protocol = NT1 .

Естественно ip-адрес для lubx64 должен быть прописан в /etc/hosts.

В 1С примонтированную "расшаренную" папку подключаем стандартным образом:

 

 

Тест с сетевой базой на Samba-сервере выдал результат 4.51, что почти в 10 раз хуже предыдущего и это недопустимо — работа с типовыми конфигурациями, например, Бухгалтерия 3.0 будет мучительной.

 

 

Такие же неутешительные результаты показала работа с «расшаренной» на Windows папкой из клиента Linux. При этом скорости копирования файлов с клиента на сервер и обратно находятся в пределах 1Гбит/с для гигабитной сетки, т. е. работа с файлами на сетевом ресурсе на «отлично». Только 1С «тормозит».

Значит причина не в самом Samba-сервере, с которым отлично работает 1С из Windows. Причиной, на мой взгляд, является пакет cifs-utils, выполняющий подключение к «расшаренным» Windows-ресурсам, и сама платформа 1С.

Действительно, при подключении с использованием cifs-utils нужно явно указывать версию протокола SMB, желательно третью версию. Например, SMB3:

sudo mount -t cifs //comp1/1CBases /home/user0/Samba -o username=guest,password=,iocharset=utf8,file_mode=0777,dir_mode=0777,vers=3.0

 

 

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

sudo mount.cifs //lubx64/1CBases /home/user0/Samba -o guest,vers=3.0

 

 

 

Для размонтировния следует набрать:

sudo umount /home/user0/Samba

 

 

Результат теста Гилева при использовании smb3 — 44.64 ("замечательно"):

 

 

В итоге получили отличную работу 1С в файловом режиме из Windows 7 с базами на Samba-сервере (Lubuntu 20.04) и «расшаренными» папками на Windows 7, но «плохую с минусом» из Linux с теми же сетевыми ресурсами по протоколу smb1, но отличную по протоколу smb3.

 

Общие выводы

В linux общий доступ к сетевой папке организуется с помощью пакета samba и настройкой конфигурационного файла smb.conf.

Чтобы иметь доступ по имени сетевого узла, необходимо отредактировать файл hosts как в windows-клиенте, так и в linux-клиенте.

Работа 1С в linux-клиенте (со стандартным пакетом cifs-utils) с файловой базой на общем ресурсе «почти неудовлетворительная» по протоколу smb1, но «замечательная» на windows-клиенте и по протоколу smb3.

has been added to your cart:
Оформление заказа