При работе с 1С:Предприятие на платформе Linux (в связке с Ubuntu, Xubuntu или Calculate Linux) системные администраторы часто сталкиваются со специфической проблемой: файлы, сохраненные непосредственно из интерфейса 1С в сетевые папки, оказываются недоступны для чтения или редактирования другим пользователям. В то же время файлы из LibreOffice сохраняются с корректными правами. Проанализируем ситуацию: 1С сохраняет файл с правами 640 (чтение/запись для владельца, чтение для группы, ничего для остальных), в то время как бизнес-процессы требуют как минимум 664 или 666.
Рассмотрим подробно причины такого поведения и разберем по шагам все способы решения этой задачи — от настройки прав на уровне сервера 1С до манипуляций с параметрами Samba и файловой системы Linux.
Когда приложение создает файл в Linux, итоговые права доступа определяются системным вызовом создания файла и текущим значением umask (user file-creation mode mask) процесса. Выясним причину разницы: LibreOffice часто использует стандартные библиотеки рабочего окружения (GTK/Qt), которые учитывают пользовательские настройки сессии. Тонкий клиент 1С или серверный процесс 1С могут иметь собственный жестко заданный umask или специфическим образом вызывать функции ядра. В результате файл создается с правами -rw-r-----, что блокирует доступ коллегам по группе. Разберем способы исправления этой ситуации.
Если отчеты формируются на стороне сервера (например, в фоновых заданиях или при использовании веб-клиента), права файла зависят от окружения пользователя usr1cv8. По умолчанию в Ubuntu 20.04 служба запускается с маской, ограничивающей доступ посторонним.
Проанализируем шаги по изменению настроек службы:
/lib/systemd/system/srv1cv83.service.[Service].UMask. Если мы хотим права 664, ставим маску 0002. Если нужны полные права 666, ставим 0000.Пример модифицированного блока конфигурации:
[Service]
Type=simple
User=usr1cv8
Group=grp1cv8
UMask=0002
ExecStart=/opt/1cv8/x86_64/8.3.x.x/ragent -daemon
После внесения изменений необходимо обновить конфигурацию systemd и перезапустить службу:
systemctl daemon-reload
systemctl restart srv1cv83
Если сохранение происходит в сетевую папку (шару), управляемую Samba (как в случае с Calculate Linux из примера), мы можем заставить сервер Samba игнорировать запросы клиента на установку прав и принудительно выставлять нужные нам атрибуты. Это самый надежный метод для гетерогенных сетей.
Рассмотрим параметры в файле smb.conf для конкретной папки:
force create mode — устанавливает минимальный набор прав для создаваемых файлов.force directory mode — аналогично для папок.inherit permissions — заставляет новые файлы наследовать права родительского каталога.Пример настройки секции в /etc/samba/smb.conf:
[Reports]
path = /srv/samba/reports
writable = yes
browseable = yes
force create mode = 0664
force directory mode = 0775
force group = sambashare
inherit permissions = yes
Параметр force group гарантирует, что владельцем группы файла всегда будет $sambashare, что в сочетании с 0664 даст всем участникам этой группы право на чтение и запись, независимо от того, что "попросила" 1С при создании файла.
Посмотрим на ситуацию со стороны файловой системы Linux. Существует специальный бит — SGID (Set Group ID). Если он установлен на папку, то все новые файлы, создаваемые внутри неё, автоматически наследуют группу этой папки, а не основную группу пользователя, создавшего файл.
Разберем реализацию этого метода:
chgrp -R sambashare /path/to/reportschmod g+s /path/to/reportsТеперь любой файл, который сохранит 1С, будет принадлежать группе sambashare. Однако, если 1С продолжает ставить маску 640, группа все равно не сможет записывать (только читать). Поэтому данный метод часто комбинируют с ACL.
Это наиболее современный и гибкий способ решения проблем с правами в Linux. Механизм Default ACL позволяет задать правила именования прав, которые будут применяться ко всем новым объектам в директории "по умолчанию", перекрывая стандартный umask процесса.
Проанализируем команды для настройки:
setfacl -d -m g:sambashare:rwx /path/to/folder
setfacl -R -m g:sambashare:rwx /path/to/folder
После этого, даже если 1С создаст файл с правами владельца 600, эффективные права для группы, заданные через ACL, позволят другим пользователям работать с отчетом.
Если сетевая папка примонтирована к клиентской машине (Xubuntu) через mount или /etc/fstab, проверьте параметры монтирования. Часто именно там задаются маски, которые "режут" права доступа.
Посмотрим на правильную строку в /etc/fstab:
//server/share /mnt/1c_reports cifs credentials=/home/user/.smbcreds,iocharset=utf8,file_mode=0666,dir_mode=0777 0 0
Использование file_mode=0666 заставляет систему монтирования представлять все файлы как доступные всем на чтение и запись, что часто решает проблему визуального отсутствия прав в интерфейсе ОС.
Для гарантированного результата рекомендуем комбинированный подход: настройку Samba (force create mode) совместно с Default ACL на сервере, где хранятся файлы. Это исключит влияние настроек конкретных клиентских машин и версий платформы 1С на доступность важных финансовых отчетов. Если же файлы сохраняются на локальный диск сервера под управлением 1С, то основным инструментом настройки будет правка srv1cv83.service с установкой корректного UMask.