Как изменить каталог временных файлов сервера 1С:Предприятия на Astra Linux

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При работе сервера 1С:Предприятие в среде Linux, особенно в высоконагруженных системах, часто возникает необходимость перенести каталог временных файлов со стандартного пути /tmp/ на другой раздел или диск (например, на быстрый SSD или RAM-диск). Это может быть продиктовано требованиями безопасности, ограниченным объемом системного раздела или необходимостью повышения производительности. Однако стандартные инструкции, предлагающие изменять .bash_profile, часто не приносят результата для серверных процессов 1С, так как они запускаются как службы systemd и не инициализируют интерактивную оболочку пользователя.

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

Выясним причину: почему .bash_profile не помогает?

Рассмотрим ситуацию, с которой сталкиваются многие администраторы: при выполнении команды sudo su - usr1cv8 и проверке mktemp -u система корректно показывает новый путь. Однако процессы rphost по-прежнему продолжают писать в /tmp/. Выясним причину этого поведения. Файлы типа .bash_profile или .profile обрабатываются только при входе пользователя в систему в интерактивном режиме (login shell). Служба сервера 1С запускается системным менеджером systemd, который создает собственное окружение для процесса, игнорируя настройки оболочки bash. Следовательно, переменные окружения нужно передавать непосредственно в конфигурацию службы.

Способ 1. Использование механизма переопределения systemd (рекомендуемый)

Разберем наиболее правильный и современный способ настройки. Вместо прямого редактирования файла /lib/systemd/system/srv1cv83.service, который может быть перезаписан при обновлении платформы 1С, мы будем использовать механизм override. Это позволит сохранить наши настройки даже после установки новой версии сервера.

Выполним следующие шаги вместе:

  1. Откроем редактор для создания файла переопределения командой:

    systemctl edit srv1cv83

  2. В открывшемся пустом файле вставим следующий блок конфигурации:
    
    [Service]
    Environment="TMPDIR=/путь/к/новому/каталогу"
    Environment="TEMP=/путь/к/новому/каталогу"
    Environment="TMP=/путь/к/новому/каталогу"
    
  3. Сохраним изменения и закроем редактор.

Проанализируем ситуацию с переменными: мы указываем сразу три переменные — TMPDIR, TEMP и TMP. Это важно, так как разные компоненты платформы 1С и внешние библиотеки (например, для работы с PDF или криптографией) могут запрашивать разные переменные окружения для поиска временной папки.

Способ 2. Подготовка нового каталога и настройка прав доступа

Просто указать путь в настройках недостаточно. Если у пользователя usr1cv8 не будет прав на запись в целевую директорию, сервер 1С не сможет запуститься или будет работать с ошибками. Рассмотрим, как правильно подготовить новое место хранения.

Предположим, мы решили использовать путь /mnt/1c_data/temp. Проделаем следующие операции:


mkdir -p /mnt/1c_data/temp
chown usr1cv8:grp1cv8 /mnt/1c_data/temp
chmod 1777 /mnt/1c_data/temp

Обратим внимание на команду chmod 1777. Установка sticky bit (единица в начале прав) крайне важна. Она гарантирует, что файлы, созданные одним процессом (например, одним из rphost), не смогут быть удалены другим процессом, не имеющим на то прав, даже если они работают в одной группе. Это стандарт для временных каталогов в Linux.

Способ 3. Особенности Astra Linux (режим Смоленск/Воронеж)

Если мы работаем в операционной системе Astra Linux Special Edition, нам необходимо учитывать мандатное управление доступом (МРД). Даже если права Linux (rwx) настроены верно, механизмы безопасности могут блокировать запись в новый каталог, если его метка безопасности не совпадает с меткой процесса 1С.

Проверим текущие метки безопасности процесса сервера 1С и нашего нового каталога. Посмотрим на пример использования команд pdp-ls:


pdp-ls -Z /tmp/  # Посмотрим метки стандартного каталога
pdp-ls -Z /mnt/1c_data/temp  # Сравним с новым каталогом

Если метки различаются, установим нужный уровень конфиденциальности для нового каталога с помощью команды pdp-set, чтобы процессы 1С имели к нему беспрепятственный доступ.

Способ 4. Автоматизация очистки через systemd-tmpfiles

Временные файлы 1С имеют неприятную особенность накапливаться, особенно при аварийном завершении сеансов. Разберем, как заставить систему автоматически очищать наш новый каталог от старых файлов, аналогично тому, как это происходит с системным /tmp/.

Для этого создадим конфигурационный файл в системе systemd-tmpfiles:

  1. Создадим файл /etc/tmpfiles.d/1c_temp.conf.
  2. Добавим в него строку:

    d /mnt/1c_data/temp 1777 usr1cv8 grp1cv8 5d

Эта запись означает: "Создавать каталог при загрузке (если его нет), устанавливать права 1777, владельца usr1cv8 и автоматически удалять файлы, которые не изменялись более 5 дней". Это обеспечит стабильную работу сервера без риска переполнения диска.

Способ 5. Использование оперативной памяти (tmpfs)

Если сервер обладает достаточным объемом оперативной памяти, мы можем значительно ускорить работу с временными файлами, разместив их в RAM-диске. Проанализируем, как это сделать через /etc/fstab.

Добавим строку в файл /etc/fstab:

tmpfs /mnt/1c_data/temp tmpfs rw,nosuid,nodev,size=4G,mode=1777,uid=usr1cv8,gid=grp1cv8 0 0

После этого выполним монтирование командой mount -a. Теперь все временные операции 1С будут происходить в памяти, что существенно снизит нагрузку на дисковую подсистему при формировании тяжелых отчетов или выполнении регламентных заданий.

Завершение настройки и проверка

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


systemctl daemon-reload
systemctl restart srv1cv83

Чтобы убедиться, что всё сделано правильно, проанализируем открытые файлы процесса rphost. Воспользуемся командой lsof:

lsof -p $(pgrep rphost | head -n 1) | grep /mnt/1c_data/temp

Если в выводе команды мы увидим дескрипторы файлов в нашем новом каталоге, значит, задача успешно решена. Мы перевели сервер 1С на использование выделенного каталога временных файлов, обеспечив при этом безопасность, производительность и удобство администрирования в среде Astra Linux.

← На главную