Аудит лицензий сервера 1С: файлы .lic, консоль кластера, rac, ring и ключи HASP
Содержание
Программные лицензии 1С на сервере — это файлы с расширением .lic. На Windows общая папка для них — C:\ProgramData\1C\licenses, на Linux — /var/1C/licenses. Какие из них сервер реально использует, видно в консоли администрирования кластера и через утилиту rac, а состав и валидность самих файлов показывает ring license list.
Частое заблуждение — что лицензия «живёт» в информационной базе или в учётной записи 1С. Нет: она привязана к компьютеру, на котором активирована. Базу можно перенести на другой сервер за десять минут, а лицензия останется на старом железе. Поэтому администрирование ключей начинается с вопроса «на какой машине и в какой папке», а не «в какой базе».
Куда платформа складывает файлы лицензий
При активации платформа записывает файл .lic в одно из хранилищ. Каких-то отдельных «лицензий сервера» в другом формате нет: серверная, клиентская многопользовательская и однопользовательская лицензии лежат рядом, отличаются содержимым.
| ОС | Общее хранилище (для всех пользователей) | Хранилище пользователя |
|---|---|---|
| Windows | C:\ProgramData\1C\licenses | %APPDATA%\1C\licenses |
| Linux | /var/1C/licenses | ~/.1cv8/1C/licenses |
Папка ProgramData по умолчанию скрыта. Наберите путь прямо в адресной строке Проводника или включите показ скрытых элементов.
Почему сервер «не видит» лицензию, которая точно есть
Служба сервера 1С работает от отдельной учётной записи. При стандартной установке это USR1CV8. Отсюда два типичных сюрприза:
- 📂 лицензию активировали из клиента под администратором Windows, и файл попал в его личный
%APPDATA%. Служба туда не заглядывает; - 🔒 файл лежит в общей папке, но у учётной записи службы нет прав на чтение каталога
licenses.
Для сервера держите все лицензии в общем хранилище и проверьте, что пользователь службы имеет права на чтение папки и файлов. На Linux — что владелец или группа позволяют читать каталог пользователю usr1cv8.
Быстрая проверка папки и прав
На Windows откройте PowerShell от имени администратора и выполните две команды: первая покажет файлы, вторая — кому разрешён доступ к папке.
Get-ChildItem C:\ProgramData\1C\licenses
icacls C:\ProgramData\1C\licenses
В выводе icacls должна быть строка с учётной записью службы или группой, в которую она входит, с правом чтения. Учётную запись службы смотрите в оснастке «Службы», в свойствах службы агента сервера 1С на вкладке входа в систему.
На Linux то же самое:
ls -la /var/1C/licenses
Если каталог принадлежит root с правами 700, служба сервера файлы не прочитает. Дайте права на чтение группе grp1cv8 или пользователю usr1cv8, перезапуск службы после этого не всегда нужен, но для серверной лицензии надёжнее перезапустить её вне рабочего времени.
Как опознать нужный файл
Имена файлов длинные и нечитаемые: в них зашит номер комплекта
и пин-код. Открывать .lic блокнотом бесполезно и опасно — случайно сохранённая правка ломает подпись, и лицензия перестаёт проходить проверку. Читать содержимое правильно через ring (ниже) или через диалог получения лицензии в клиенте, где есть просмотр полученных лицензий.
Не копируйте файлы .lic на другой сервер «на время» и не правьте их руками. Лицензия проверяет параметры компьютера, на другом железе она не заработает, а лишний шум в папке мешает диагностике.
Что показывает консоль администрирования кластера
Консоль «Администрирование серверов 1С:Предприятия» отвечает на вопрос, какие лицензии сервер выдал сейчас. Файлы на диске — это запас, консоль — это расход.
Откройте консоль, подключитесь к центральному серверу и разверните кластер.
- Узел
Рабочие процессы→ нужный процесс → вложенный узелЛицензии. Здесь видна серверная лицензия, которую получил процесс: программная она или ключ HASP, из какого файла или с какого ключа взята. - Узел
Сеансы. Для каждого сеанса доступны сведения о клиентской лицензии: кто её выдал (сервер или сам клиентский компьютер), тип лицензии, на сколько пользователей рассчитан источник. Чтобы увидеть их, откройте свойства сеанса или вложенный список лицензий в узле — вид зависит от версии консоли. - Свойства информационной базы. Флаг
Разрешить выдачу лицензий сервером 1С:Предприятияопределяет, будет ли сервер раздавать клиентские лицензии для этой базы.
Если в узле процесса список лицензий пуст, а пользователи при этом работают, значит, сервер запущен без серверной лицензии — смотрите раздел про ошибки.
Консоль подключается к агенту сервера по порту 1540. Если она не открывается, проблема не в лицензиях, а в службе агента, брандмауэре или зарегистрированной библиотеке консоли (radmin.dll перерегистрируют через regsvr32 из каталога bin нужной версии платформы).
Проверка из командной строки: ras и rac
На Linux графической консоли часто нет, а на Windows удобнее выгрузить данные в текст и сравнить. Для этого есть пара утилит:
- ras — сервер администрирования, принимает команды и передаёт их кластеру. По умолчанию слушает порт 1545;
- rac — клиент, которым вы эти команды отправляете.
Обе лежат в каталоге bin платформы. Сначала запустите ras, если он ещё не работает
как служба:
ras cluster --daemon
Затем получите идентификатор кластера и посмотрите лицензии:
rac cluster list
rac process list --cluster=<id_кластера> --licenses
rac session list --cluster=<id_кластера> --licenses
Первая команда выводит cluster — это и есть идентификатор. Вторая показывает серверные лицензии рабочих процессов, третья — клиентские лицензии по сеансам. Если на кластере заданы администраторы, добавьте --cluster-user=<имя> --cluster-pwd=<пароль>.
В выводе ищите поля с типом лицензии, именем файла и признаком того, кто её выдал. Сеанс с лицензией, полученной на клиентском компьютере, говорит, что на рабочей станции лежит своя лицензия или подключён локальный ключ.
Перенаправьте вывод в файл: rac session list ... --licenses > lic.txt. По такому снимку легко посчитать, сколько клиентских мест занято с сервера в пиковый час и хватает ли купленного комплекта.
Точный набор параметров зависит от версии платформы. Если команда ругается на ключ, смотрите rac help session или rac help process.
Что внутри файла: утилита ring license
Консоль показывает, что выдано. А чтобы понять, какие файлы вообще есть в хранилище и живы ли они, используют ring из пакета 1C:Enterprise License Tools. Пакет ставится вместе с платформой или отдельно и требует Java.
Основные команды:
ring license list
ring license info --name <имя_лицензии>
ring license validate --name <имя_лицензии>
list— перечень лицензий в хранилище с их именами;info— содержимое: продукт, количество пользователей, регистрационные данные владельца;validate— проверка, подходит ли лицензия к текущему компьютеру.
Именно validate отвечает на вопрос «лицензия есть, но не работает». Если проверка не проходит, файл привязан к другим параметрам железа или ОС.
На серверах без графики ring — основной способ активировать и проверить лицензию
. Полный список подкоманд даёт ring license help.
Аппаратные ключи HASP: локальные и сетевые
Аппаратная защита по-прежнему встречается на серверах, где её купили много лет назад. Ключ — USB-брелок. Для серверной лицензии он вставляется в сам сервер 1С, для клиентских мест может стоять где угодно в сети.
Что проверить на машине с ключом:
- 🔌 Ключ определяется системой и светится. Без драйвера защиты HASP/Sentinel платформа его не увидит — драйвер ставится из дистрибутива платформы или с сайта производителя ключей.
- 🖧 Для сетевого ключа запущен менеджер лицензий HASP License Manager. Он слушает порт 475 (UDP и TCP), этот порт должен быть открыт между клиентами и машиной с ключом.
- 👀 Утилита Aladdin Monitor показывает, какие ключи видит менеджер и сколько мест сейчас занято.
На клиентах и сервере 1С поиск сетевого ключа настраивают файлом nethasp.ini в каталоге bin платформы. Широковещательный поиск в больших сетях работает медленно или не работает вовсе, поэтому адрес лучше указать явно:
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.10
NH_USE_BROADCAST = Disabled
nethasp.ini нужен в каталоге bin каждой установленной версии платформы. Обновили платформу — проверьте, что файл попал и в новый каталог. Это одна из самых частых причин «после обновления пропали лицензии».
В консоли кластера ключ отображается так же, как программная лицензия: в узле лицензий рабочего процесса или сеанса указан тип HASP вместо имени файла.
Кто раздаёт лицензии: сервер, клиент или выделенный сервис
В клиент-серверном варианте клиентская лицензия может прийти из двух мест: с компьютера пользователя или с сервера 1С. Порядок такой — сначала клиент ищет лицензию у себя, затем, если выдача сервером разрешена, получает её у кластера.
Поэтому многопользовательские клиентские лицензии в серверной установке обычно активируют на сервере, а не на каждой рабочей станции. Для этого:
- Активируйте клиентский комплект на сервере 1С в общем хранилище.
- В свойствах информационной базы в консоли включите
Разрешить выдачу лицензий сервером 1С:Предприятия. - Перезапускать службу для этого не нужно: новые сеансы начнут получать лицензии с сервера.
Если в кластере несколько рабочих серверов, выдачу лицензий можно закрепить за одним из них. Это делается в свойствах рабочего сервера, в разделе требований назначения функциональности: для объекта «Сервис лицензирования» задают, какой сервер его выполняет. Удобно, когда лицензии активированы на одной конкретной машине, а рабочих серверов несколько.
| Где лежит лицензия | Плюсы | Минусы |
|---|---|---|
| На сервере 1С | один файл на всех, легко считать занятые места | выход сервера из строя оставляет без лицензий всех |
| На рабочих станциях | не зависит от сервера | нужна активация на каждом ПК, слетает при замене железа |
| Сетевой ключ HASP | переносится между машинами | порт 475, драйвер, nethasp.ini на каждом клиенте |
Технологический журнал и типовые ошибки
Когда консоль и ring не дают ответа, включите технологический журнал с событием LIC. Оно фиксирует попытки получения лицензий: откуда искали, что нашли и почему отказали.
Создайте файл logcfg.xml в каталоге conf платформы (на Windows по умолчанию C:\Program Files\1cv8\conf):
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\1c_logs\lic" history="24">
<event>
<eq property="name" value="LIC"/>
</event>
<property name="all"/>
</log>
</config>
Платформа подхватывает настройку без перезапуска в течение минуты. Каталог для логов создайте заранее и дайте пользователю службы права на запись. После диагностики удалите или переименуйте logcfg.xml, иначе журнал продолжит расти.
Завершение зависших сеансов в консоли освобождает лицензии, но обрывает работу этих пользователей без сохранения. Убедитесь, что сеанс действительно брошен (давно нет активности), и предупредите людей. Перезапуск службы сервера 1С отключит всех — делайте его вне рабочего времени.
Частые вопросы
Можно ли держать серверную и клиентские лицензии в одной папке?
.lic лежат в одном хранилище, платформа сама разбирает, какая лицензия для чего.Сколько клиентских лицензий съедает один пользователь с двумя окнами 1С?
Нужна ли лицензия для консоли администрирования и rac?
Можно ли перенести программную лицензию на новый сервер?
Как быстро узнать, сколько мест свободно прямо сейчас?
ring license info с числом сеансов, получивших лицензию с сервера, по выводу rac session list --licenses.