При работе на одном терминальном сервере (RDP) с несколькими независимыми организациями часто возникает проблема «смешивания» лицензий. По умолчанию 1С ищет программные лицензии в общих папках, таких как C:\ProgramData\1C\licenses. Это приводит к тому, что пользователи одной фирмы могут случайно занять лицензии другой, а в окне «О программе» отображаются данные всех активированных на сервере ключей, что нарушает конфиденциальность. Рассмотрим детально, как грамотно изолировать лицензии для каждой группы пользователей.
Разберем ситуацию, с которой сталкиваются многие администраторы при попытке простого копирования лицензий. Перемещение файлов .lic в папку %AppData%\Local\1C\1cv8\conf каждого пользователя кажется логичным, но на практике это приводит к серьезным проблемам. Проанализируем причины:
Поэтому мы крайне не рекомендуем дублировать файлы лицензий. Вместо этого необходимо использовать методы ограничения видимости одного единственного экземпляра файла.
Проанализируем наиболее современный и «чистый» способ изоляции — использование Microsoft FSLogix. Это решение позволяет буквально «скрыть» файлы от тех, кому они не предназначены, на уровне файловой системы.
Рассмотрим алгоритм настройки:
C:\ProgramData\1C\licenses\Firm1C:\ProgramData\1C\licenses\Firm2.lic в эти папки.Firm2 должна быть скрыта для всех пользователей, входящих в группу Группа_Фирма1.Firm1 для пользователей Группа_Фирма2.Результат: Когда пользователь запускает 1С, операционная система «делает вид», что чужих папок с лицензиями не существует. 1С видит только «свои» файлы, при этом физически они остаются в одном экземпляре, что исключает блокировки.
Выясним, как можно управлять поиском лицензий с помощью штатных средств платформы. 1С позволяет переопределить стандартные пути поиска конфигурации. Рассмотрим этот метод пошагово.
Для реализации этого метода нам потребуется создать индивидуальную структуру каталогов для каждой фирмы. Например, создадим корень C:\1C_Distr\ и в нем подпапки Org1, Org2.
В основной папке установки платформы (например, C:\Program Files\1cv8\current_version\bin\conf) мы можем отредактировать файл conf.cfg, указав в нем параметр ConfLocation. Однако более гибким будет создание файла 1cescmn.cfg.
Разберем пример содержимого файла 1cescmn.cfg, который можно разместить в профиле пользователя или в папке с платформой:
DistributeLicensing=0
LicensingServerName=MainServer
LicensingServerPort=1540
Но если мы работаем с файловыми базами, нам важнее перенаправить поиск локальных лицензий. Для этого создадим группы пользователей в Windows (например, 1C_Firm1_Users) и настроим права доступа (NTFS) на папки с лицензиями. Важно не просто запретить чтение файла, а запретить просмотр содержимого папки (List folder contents). Если 1С не сможет получить список файлов в директории, она не будет пытаться их использовать.
Если инфраструктура позволяет, рассмотрим вариант с использованием компонента «1С:Сервер лицензирования». Это программный модуль, который может раздавать лицензии по сети (даже на одном физическом сервере).
Проанализируем этот подход:
.v8i или через параметры запуска) указывается, к какому серверу лицензий обращаться.Этот метод сложнее в настройке, но он обеспечивает 100% изоляцию, так как клиентское приложение 1cv8.exe вообще не ищет файлы локально, а получает лицензию от конкретной службы по протоколу TCP/IP.
Посмотрим на более простой, «админский» способ с использованием символьных ссылок (Symbolic Links). Мы можем создать для всех пользователей в системе один и тот же путь поиска лицензий, но для каждого сеанса этот путь будет вести в разные места.
Рассмотрим алгоритм работы скрипта при входе пользователя (Logon Script):
mklink /D "C:\Users\%USERNAME%\AppData\Local\1C\licenses" "C:\Licenses\Firm_1"
C:\Licenses\Firm_1 лежат оригиналы файлов.Важный момент: Чтобы 1С не «подхватывала» общие лицензии из ProgramData, их необходимо оттуда убрать. Но помните, что после каждого обновления платформы 1С может пытаться создать или проверить эти пути снова.
Разберем причину, упомянутую в обсуждении, когда 1С видит файл, на который у пользователя нет прав. Это происходит из-за того, что платформа 1С может запускаться с повышенными привилегиями или использовать механизмы кэширования путей. Кроме того, если пользователю запрещено чтение, но разрешен «Обзор папки», 1С увидит имя файла и попытается его прочитать, что вызовет ошибку в журнале или замедление работы. Всегда ограничивайте права именно на уровне родительской папки, полностью исключая возможность листинга (просмотра списка файлов) для «чужих» групп.
Подводя итог, проанализируем, какой метод лучше выбрать в зависимости от условий:
ProgramData.Помните, что любые манипуляции с файлами лицензий должны сопровождаться сохранением резервных копий кодов активации (пин-кодов), так как при повреждении файлов .lic потребуется повторная активация.