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С v8.3 Бесплатно (free)

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

25.04.2024    984    virustam    27    

6

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

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

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

24.04.2024    366    Yan_Malyakov    0    

2

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

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

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

18.04.2024    361    artemusII    0    

7

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

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

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

16.04.2024    371    xKaskadx    4    

1

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

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

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

11.04.2024    403    pahmutov    0    

2

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

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

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

07.04.2024    758    Bessome    4    

5

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

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

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

28.03.2024    1356    Garilia    3    

15

Создаем сценарии обслуживания SQL в Центре Контроля Качества 1С (Центр Администрирования)

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

Данная статья научит вас, как создавать скрипты обслуживания MS SQL для Центра Контроля Качества (ЦКК) или Центра Администрирования (ЦА).

20.03.2024    820    Silenser    0    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dvsidelnikov 67 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 67 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.
Оставьте свое сообщение