Как настроить стабильный доступ сервера 1С на Linux к сетевой папке Windows

Системный администратор IT и автоматизация бизнеса
← На главную

При переводе серверов 1С:Предприятие на операционную систему Linux технические специалисты часто сталкиваются со следующей задачей: необходимо обеспечить доступ сервера приложений к сетевой папке, расположенной в инфраструктуре Windows (например, для выполнения обменов РИБ, выгрузки отчетов или хранения файлов). В операционной системе Windows мы привыкли использовать стандартные сетевые пути формата \\server\share. Однако Linux-сервер напрямую работать с такими путями в коде 1С не сможет.

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

Основной подход: монтирование сетевого ресурса

Для того чтобы сервер 1С под управлением Linux мог работать с сетевой папкой Windows, как с обычным локальным каталогом, эту папку необходимо примонтировать в файловую систему Linux. Выясним причину, почему это лучшее решение: в таком случае для самой платформы 1С путь к файлам будет выглядеть как стандартный локальный путь Linux, например: /mnt/win/RIB. Это полностью исключает необходимость переписывать программный код конфигураций под особенности сетевых протоколов.

Рассмотрим по шагам, как выполнить базовое монтирование сетевого ресурса Windows (SMB/CIFS) на сервере Linux.

Для начала создадим локальный каталог, в который будет монтироваться сетевая папка. Выполним в консоли Linux команду от имени суперпользователя:

mkdir -p /mnt/win

Теперь проанализируем базовую команду монтирования, которая предлагалась в обсуждении на форуме:

mount -t cifs //server/ts/RIB /mnt/win/ -o dom=DOMAIN,user=USER,pass=PASS

Обратите внимание на важный совет из обсуждения: крайне рекомендуется переименовать сетевую папку на стороне Windows так, чтобы в ее имени использовалась только латиница (например, заменить "риб" на "RIB"). Использование кириллицы в сетевых путях при работе с Linux часто приводит к труднодиагностируемым ошибкам кодировки.

Хотя базовая команда позволяет быстро проверить доступ к ресурсу, для реальной промышленной эксплуатации сервера 1С ее использовать нельзя. Проанализируем типичные проблемы базового монтирования и разберем способы их устранения.

Проблема 1: Права доступа на файлы (UID и GID)

Если выполнить монтирование от имени суперпользователя root без указания дополнительных параметров, владельцем всех файлов в примонтированной папке станет root. Сервер 1С:Предприятие на Linux запускается под системным пользователем (обычно это usr1cv8, входящий в группу grp1cv8). В результате служба 1С не сможет записать ни одного файла в сетевую директорию и вернет ошибку прав доступа.

Выясним, как решить эту проблему. Перед монтированием нам необходимо узнать идентификаторы (UID и GID) пользователя, под которым работает сервер 1С. Выполним в терминале команду:

id usr1cv8

В ответ система вернет числовые значения, например: uid=995(usr1cv8) gid=1002(grp1cv8). Теперь мы можем использовать эти данные при монтировании, явно указав их в параметрах. Дополнительно заставим Linux принудительно назначать владельцем создаваемых файлов именно нашего пользователя с помощью опций forceuid и forcegid:


mount -t cifs //server/ts/RIB /mnt/win/ -o user=USER,pass=PASS,uid=995,gid=1002,file_mode=0777,dir_mode=0777,forceuid,forcegid

Проблема 2: Падение сетевого соединения и перезагрузка серверов

Участники обсуждения справедливо отмечают, что если Windows-сервер перезагрузится или на сетевом оборудовании произойдет кратковременный сбой, смонтированная вручную папка "отвалится". Сервер 1С потеряет доступ к файлам, что приведет к аварийному завершению фоновых заданий или обменов данными.

Для решения этой проблемы мы откажемся от жесткого статического монтирования при загрузке и настроим современный механизм автоматического монтирования по требованию с помощью systemd.automount. Этот способ монтирует сетевую папку только в тот момент, когда к ней обращается сервер 1С, и автоматически восстанавливает подключение в случае сетевого сбоя.

Для настройки отредактируем конфигурационный файл /etc/fstab. Добавим в него параметры автоматического монтирования:

noauto,x-systemd.automount,x-systemd.device-timeout=10,_netdev,nofail

Разберем, за что отвечает каждый параметр:

  1. noauto — предотвращает попытку смонтировать папку непосредственно в момент загрузки операционной системы, когда сеть еще может быть не настроена.
  2. x-systemd.automount — указывает системе монтировать ресурс динамически, при первом обращении любого процесса (в нашем случае службы 1С) к каталогу /mnt/win.
  3. x-systemd.device-timeout=10 — задает таймаут ожидания сетевого устройства в секундах, чтобы система не "зависала", если Windows-сервер долго не отвечает.
  4. _netdev — явно сообщает операционной системе, что данный ресурс является сетевым, и его инициализация зависит от доступности сетевого стека.
  5. nofail — позволяет операционной системе Linux успешно загрузиться, даже если целевой Windows-сервер в этот момент полностью отключен.

Проблема 3: Безопасность учетных данных Windows

Указывать имя пользователя и пароль от Windows-ресурса открытым текстом в конфигурационном файле /etc/fstab крайне небезопасно, так как этот файл доступен для чтения всем пользователям системы. Для защиты учетных данных создадим отдельный файл конфигурации, например /etc/1c-cifs.cred:


username=WINDOWS_USER
password=WINDOWS_PASSWORD
domain=DOMAIN_NAME

Установим жесткие права доступа на этот файл, разрешив его чтение только суперпользователю root:

chmod 600 /etc/1c-cifs.cred

После этого в параметрах монтирования вместо user=... и pass=... мы будем использовать безопасную опцию credentials=/etc/1c-cifs.cred.

Проблема 4: Версия протокола SMB и оптимизация под 1С

Современные версии Windows Server по умолчанию отключают устаревший протокол SMBv1 (CIFS) из соображений безопасности. Чтобы избежать ошибок подключения, обязательно укажем современную версию протокола в параметрах монтирования с помощью ключа vers=3.0.

Кроме того, для стабильной работы СУБД и файловых операций сервера 1С рекомендуется применить специфичные настройки оптимизации блокировок:

Итоговое решение: настройка конфигурации

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


//server/ts/RIB /mnt/win cifs noauto,x-systemd.automount,x-systemd.device-timeout=10,_netdev,nofail,credentials=/etc/1c-cifs.cred,uid=995,gid=1002,file_mode=0777,dir_mode=0777,forceuid,forcegid,vers=3.0,nobrl,nounix,soft 0 0

После внесения изменений в файл /etc/fstab выполним команду перезапуска конфигурации systemd, чтобы применить настройки автомонтирования:


systemctl daemon-reload
systemctl restart remote-fs.target

Теперь при первой же попытке обращения сервера 1С (или любого пользователя) к локальному пути /mnt/win операционная система Linux автоматически инициирует безопасное и стабильное подключение к Windows-шаре \\server\ts\RIB с корректными правами доступа для пользователя usr1cv8.

← На главную