Как настроить Linux-клиент 1С для поиска аппаратных лицензий через файл nethasp.ini

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

При работе с платформой 1С:Предприятие 8.3 на операционных системах семейства Linux (в частности, Ubuntu) системные администраторы часто сталкиваются с проблемой, когда клиентское приложение игнорирует сетевые аппаратные ключи HASP. В то время как Windows-клиенты успешно находят лицензии по сети, Linux-машины либо ограничиваются локальными программными лицензиями, либо выдают ошибку об отсутствии ключа. Рассмотрим подробно, как заставить систему «увидеть» конфигурационные файлы и корректно инициализировать поиск лицензий.

Разберем структуру и содержание файла nethasp.ini

Прежде чем определять местоположение файла, убедимся, что его содержимое корректно настроено для работы в Linux-среде. В отличие от Windows, в Linux крайне важно минимизировать использование широковещательных запросов (Broadcast), которые часто блокируются сетевыми экранами или некорректно обрабатываются сетевым стеком. Проанализируем оптимальный вариант содержимого nethasp.ini:


[NH_COMMON]
NH_TCPIP = Enabled

[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.51
NH_USE_BROADCAST = Disabled
NH_TCPIP_METHOD = UDP

В данном примере мы явно указываем IP-адрес сервера, на котором установлен аппаратный ключ и запущен HASP License Manager. Параметр NH_USE_BROADCAST = Disabled критически важен: он отключает сканирование всей подсети и заставляет клиент обращаться напрямую к указанному узлу, что значительно ускоряет запуск и повышает стабильность соединения.

Определим пути размещения конфигурационных файлов

Выясним причину, по которой 1С часто «не видит» созданный файл. Согласно документации и практическому опыту, система ищет nethasp.ini в нескольких местах. Проанализируем основные варианты расположения в зависимости от версии платформы и способа установки:

  1. Каталог /etc: Это стандартное место для общесистемных конфигураций в Linux. Попробуем разместить файл прямо в /etc/nethasp.ini.
  2. Домашний каталог пользователя: Система проверяет путь ~/.1cv8/1C/1cv8/conf/. Важно помнить, что символ ~ означает папку того пользователя, под которым запускается сеанс 1С.
  3. Каталог установки платформы: Для версии 8.3.18 и выше это могут быть пути вида /opt/1cv8/x86_64/conf/ или /opt/1cv8/common/.

Важное замечание: Linux чувствителен к регистру символов. Файл должен называться строго nethasp.ini (ни в коем случае не NetHasp.ini или nethasp.INI).

Использование файла conf.cfg для переопределения путей

Если стандартные пути не срабатывают, применим более надежный метод — явное указание расположения конфигурационных файлов через conf.cfg. Рассмотрим этот алгоритм по шагам:

Найдем или создадим файл conf.cfg. Обычно он располагается в /opt/1cv8/conf/ или в каталоге конкретной версии платформы. Добавим в него параметр ConfLocation, который указывает системе, где искать logcfg.xml и nethasp.ini:

ConfLocation = /opt/1cv8/conf

После этого положим наш nethasp.ini именно в эту папку. Теперь платформа при запуске будет в первую очередь обращаться к указанной директории.

Настройка прав доступа

Частой ошибкой является создание файлов от имени суперпользователя (root), из-за чего обычный пользователь, запускающий 1С, не может их прочитать. Проанализируем ситуацию с правами. Выполним команды в терминале для установки корректного владельца (замените usr1cv8:grp1cv8 на данные вашего пользователя, если они отличаются):


sudo chown -R usr1cv8:grp1cv8 /opt/1cv8/conf
sudo chmod 644 /opt/1cv8/conf/nethasp.ini

Без возможности чтения файла процессом 1С все настройки внутри nethasp.ini будут проигнорированы, и система выдаст сообщение о том, что файл настроек не найден.

Диагностика с помощью переменных окружения и strace

Если решение все еще не найдено, воспользуемся инструментами глубокой диагностики. В Linux существует переменная окружения HASP_INI_PATH, которая позволяет жестко задать путь к каталогу с файлом. Попробуем запустить 1С из терминала следующим образом:


export HASP_INI_PATH=/opt/1cv8/conf
/opt/1cv8/x86_64/8.3.18.1208/1cv8c

Если и это не помогло, проанализируем действия системы с помощью утилиты strace. Она покажет в реальном времени, по каким путям программа пытается открыть файл и какую ошибку получает. Выполним команду:

strace -e open,openat /opt/1cv8/x86_64/8.3.18.1208/1cv8c 2>&1 | grep nethasp

В выводе мы увидим системные вызовы. Если напротив пути стоит ENOENT (No such file or directory) — значит, файла там нет или имя указано с ошибкой в регистре. Если EACCES (Permission denied) — проблема в правах доступа.

Приоритеты лицензирования: Программные vs Аппаратные

Выясним важный нюанс: платформа 1С всегда имеет внутренний алгоритм приоритетов. Если на компьютере или сервере уже активированы программные лицензии (файлы .lic), система может пытаться использовать их в первую очередь. Рассмотрим ситуацию, когда сервер 1С (Manage by Server) сам раздает лицензии. В этом случае настройки nethasp.ini на локальном Linux-клиенте могут игнорироваться, так как клиент получает лицензию от сервера. В такой конфигурации nethasp.ini необходимо настраивать на стороне сервера 1С, чтобы именно сервер знал, где искать дополнительные аппаратные ключи в сети.

Также проверьте наличие библиотеки защиты libhasp_linux.so в каталоге с бинарными файлами 1С. Без этой библиотеки работа с драйвером HASP в принципе невозможна, и поиск любых ini-файлов даже не начнется.

Заключение

Таким образом, для успешной настройки Linux-клиента нам необходимо:

  1. Создать корректный nethasp.ini с отключенным Broadcast и указанием прямого IP-адреса.
  2. Разместить его в каталоге, доступном для чтения пользователю 1С (рекомендуется /opt/1cv8/conf).
  3. При необходимости прописать путь к этому каталогу в conf.cfg через параметр ConfLocation.
  4. Убедиться в отсутствии блокировок по портам 475 UDP/TCP между клиентом и сервером лицензий.

Соблюдение этих шагов позволяет решить проблему «невидимости» аппаратных ключей в большинстве дистрибутивов Linux.

← На главную