Переход сервера 1С:Предприятие с ОС Windows на Linux часто сопровождается трудностями при настройке привычных механизмов обмена данными между конфигурациями (например, Управление торговлей и Бухгалтерия предприятия). Основная проблема заключается в том, что привычные администраторам Windows пути формата \\server\folder в среде Linux не работают «из коробки». В данной статье мы подробно разберем, как правильно организовать папку обмена, чтобы сервер 1С имел к ней беспрепятственный доступ. В рамках комплексной миграции систем на отечественное ПО может пригодиться пошаговое руководство по развертыванию инфраструктуры 1С на Astra Linux.
Разберем ситуацию: при попытке указать в настройках синхронизации данных путь в формате \\192.168.1.10\Exchange, система выдает ошибку доступа. Это происходит потому, что операционная система Linux не поддерживает протокол SMB (Windows-шары) на уровне ядра так, как это делает Windows. Для 1С, запущенной на Linux, такой путь является просто набором символов, а не указателем на ресурс.
Рассмотрим основные способы решения этой задачи, начиная от самых простых и надежных, заканчивая более сложными интеграциями. Для решения этой задачи также можно использовать инструмент для обмена данными между базами 1С.
Проанализируем самый стабильный вариант. Если оба информационных узла находятся на одном физическом или виртуальном сервере (или если файлы обмена планируется забирать по FTP/WebDAV), лучше всего использовать локальную директорию. При необходимости настроить регулярную синхронизацию по расписанию применяется программа автоматического обмена данными между базами 1С, функционирующая поверх стандартных планов обмена.
Шаг 1. Создание каталога. Программно сервер 1С на Linux чаще всего работает от имени специального системного пользователя usr1cv8. Именно этому пользователю должны принадлежать все права на папку обмена. Создадим папку в домашнем каталоге пользователя:
mkdir -p /home/usr1cv8/exchange/data_out
chown -R usr1cv8:grp1cv8 /home/usr1cv8/exchange/
chmod -R 770 /home/usr1cv8/exchange/
Шаг 2. Настройка в 1С. В интерфейсе программы (например, в мастере настройки синхронизации) необходимо указывать путь в стиле Linux. Важно помнить, что Linux чувствителен к регистру символов (Case Sensitivity). Путь /home/usr1cv8/Exchange и /home/usr1cv8/exchange — это две разные папки. В настройках 1С прописываем:
/home/usr1cv8/exchange/data_out/
Выясним причину, по которой администраторы часто терпят неудачу при попытке примонтировать внешнюю папку Windows к Linux-серверу. Часто папка монтируется от имени root, и сервер 1С не может в нее ничего записать. Разберем по шагам правильный алгоритм монтирования сетевой шары.
Для начала нам понадобится пакет cifs-utils. Рассмотрим процесс монтирования через файл /etc/fstab, чтобы папка была доступна автоматически после перезагрузки сервера. Добавим следующую строку:
//192.168.1.50/Exchange /mnt/1c_exchange cifs user,username=exchange_user,password=secret_pass,rw,iocharset=utf8,uid=usr1cv8,gid=grp1cv8 0 0
Обратим внимание на критически важные параметры: uid=usr1cv8 и gid=grp1cv8. Эти параметры заставляют систему «думать», что владельцем всех файлов в примонтированной папке является пользователь 1С. Без этого запись файлов при обмене будет невозможна.
Если настройка прав файловой системы кажется слишком сложной или если серверы территориально распределены, оптимальным решением станет использование протокола FTP. Типовые конфигурации 1С отлично умеют работать с FTP-серверами. В этом случае серверу 1С на Linux не нужно «знать» о существовании папки в файловой системе — он просто передает поток данных по сетевому протоколу.
При настройке обмена через FTP важно:
Права на родительские каталоги. Разберем ситуацию: вы создали папку /backup/exchange и дали права пользователю usr1cv8. Но обмен не работает. Проверьте, есть ли у пользователя 1С право на «исполнение» (x) для всех вышестоящих папок (в данном случае для папки /backup). В Linux, чтобы зайти в подкаталог, нужно иметь право выполнения на все родительские директории в пути.
Контекст выполнения. Посмотрим на ситуацию со стороны платформы. Обмен данными обычно выполняется в контексте фонового задания. Это означает, что код выполняется непосредственно на сервере. Поэтому любые относительные пути (типа ./exchange) использовать нельзя — только абсолютные пути от корня файловой системы /.
Системы безопасности SELinux и AppArmor. В дистрибутивах вроде CentOS или Ubuntu могут быть включены системы принудительного контроля доступа. Если даже при полных правах (777) 1С получает ошибку Access denied, стоит проверить логи систем безопасности. Они могут блокировать доступ процессу rphost к папкам вне стандартного рабочего каталога 1С.
Подводя итог, можно сказать, что для успешного обмена на Linux необходимо отказаться от логики путей Windows, четко определить владельца папки (usr1cv8) и использовать либо правильно примонтированные ресурсы с параметрами uid/gid, либо переходить на универсальные протоколы обмена (FTP/WebDAV).