SAMBA для 1С

24.12.21

База данных - Администрирование СУБД

Представлен необходимый минимум настройки 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, а в Windows - 16384. Для этого в файле /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.

SAMBA cifs-utils linux windows установка настройка тестирование.

См. также

Установка и примеры использования 1С:Исполнитель на РедОС

Администрирование СУБД Платформа 1С v8.3 Бесплатно (free)

Краткое описание шагов по установке, настройке и применению инструмента 1С:Исполнитель на операционной системе РедОС, а также по борьбе с некоторыми возникающими ошибками.

06.05.2024    299    artemusII    0    

1

Нестандартное решение пересчета итогов

Администрирование СУБД Платформа 1С v8.3 Бесплатно (free)

Статья для тех, кто столкнулся с необходимостью пересчета итогов для "больших таблиц" и нет возможности поставить на паузу ИБ для проведения работ.

25.04.2024    1413    virustam    28    

7

Идентификация пользователя не выполнена

Администрирование СУБД Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

Иногда в конфигурации 1С:Бухгалтерский учет v3.0 возникает ситуация, когда программа всем пользователям выдает предупреждение, что авторизация не выполнена и работа программы будет завершена. Данная инструкция позволяет решить возникшую проблему.

24.04.2024    497    Yan_Malyakov    0    

2

Устранение ошибки выполнения скрипта "Создать сервис RAGENT" в ЦКК

Администрирование СУБД Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

В статье показано, как устранить ошибку выполнения скрипта "Создать сервис RAGENT" в системах 1С:Центр контроля качества или в 1С:Центр автоматизации. Будет полезна администраторам ЦКК и ЦА, которые только начали знакомство с этими системами.

18.04.2024    384    artemusII    0    

7

Долгая реструктуризация, замеры времени и очистка Ветис. Розница 2.3

HighLoad оптимизация Администрирование СУБД Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Бесплатно (free)

При подготовке к обновлению возникли проблемы на стадии тестирования и исправления базы данных, также при создании файлов РИБ для магазинов.

16.04.2024    410    xKaskadx    4    

1

Установка и получение лицензии на базовую конфигурацию 1С на Mac OS

Администрирование СУБД Платформа 1С v8.3 Бесплатно (free)

Установить купленную базовую конфигурацию 1С и получить лицензию на MAC OS не так просто, как кажется на первый взгляд и как хотелось бы. Официально в системных требованиях на базовую конфигурации 1С пишет всякие виндовсы и пару-тройку линуксов. МакОс там нет. В статье расскажу, как все-таки поставить на Мак базовую конфигурацию 1С.

11.04.2024    434    pahmutov    0    

2

Установка тонкого клиента 1С на Rasbian (Raspberry Pi 5)

Администрирование СУБД Платформа 1С v8.3 Бесплатно (free)

После приобретения Raspberry Pi 5 решил проверить, есть ли возможность использования устройства для организации тонкого клиента. В результате столкнулся с особенностью установки 1С: Предприятие 8.3.23 на Raspbian, решением которой я хочу поделиться с сообществом.

07.04.2024    821    Bessome    4    

5

Порционный шринк базы

Администрирование СУБД Бесплатно (free)

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

28.03.2024    1399    Garilia    3    

15
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dvsidelnikov 68 25.12.21 10:17 Сейчас в теме
Спасибо за статью. Познавательно.
Думаю будет не лишним упомянуть, что одновременная работа с файловой базой линукс и windows клиента 1С невозможна. По крайней мере так было, когда я экспериментировал на этом поприще, года 2 назад.
P.S. Со статьёй ознакомился бегло, мог и пропустить что-то.
2. compil7 80 25.12.21 22:19 Сейчас в теме
(1)Тестировал: 2 клиента из ubuntu 20.04 и один клиент из windows 7 на шару ubuntu 20.04, конфа бух. 30 - работает, но производительность гораздо ниже (2 - 4 по тесту Гилева), чем с использованием web-сервера или автономного сервера. Необходимо, чтобы у клиентов версии samba были одинаковы. Работать через шару рекомендую в крайнем (очень запущенном) случае или если только один клиент. Лучше пользоваться всеми новыми возможностями платформы...
dvsidelnikov; +1 Ответить
3. dvsidelnikov 68 26.12.21 09:07 Сейчас в теме
(2) правильно ли я вас понял: одновременно/параллельно с одной файловой базой может работать и Linux и Windows клиент 1С? Давно вы проводили этот тест? Может, версию платформы получится вспомнить?
4. compil7 80 28.12.21 09:41 Сейчас в теме
(3) 8.3.17
SAMBA сервер - чистый Ubuntu 20.04
Клиент Windows 7 x32 (smb 2.1)
Клиент Ubuntu 16.04 (smb2.1)
Клиент Xubuntu 20.04 (smb2.1)
dvsidelnikov; +1 Ответить
5. gigapevt 25 29.12.21 13:12 Сейчас в теме
А не проще ли было поставить Апач и опубликовать на него базы ? и не было бы всех этих танцев с бубном. И производительность будет выше чем у Вас на скринах.
6. compil7 80 29.12.21 20:18 Сейчас в теме
(5) Эта статья - как дополнение (вариант реализации) к моей статье: Xubuntu для бухгалтера 1С. , где и рассматривается настройка 1С через WEB.
Оставьте свое сообщение