При переходе на отечественные операционные системы семейства Alt Linux, в частности Simply Linux, системные администраторы часто сталкиваются с проблемой, когда физически подключенный и светящийся USB-ключ HASP не определяется платформой «1С:Предприятие». Проблема может заключаться как в отсутствии необходимых драйверов и 32-битных библиотек, так и в особенностях работы служб в Linux-окружении. Рассмотрим подробно, как диагностировать и решить эту проблему шаг за шагом. Для решения других задач по настройке окружения пригодится справочник по системному администрированию Linux и 1С.
Прежде чем приступать к программной настройке, нам необходимо убедиться, что операционная система вообще видит устройство на уровне USB-шины. Для этого проанализируем вывод системных команд. Откроем терминал и выполним команду для просмотра подключенных USB-устройств:
lsusb
В списке устройств мы должны найти запись, содержащую идентификатор производителя 0529 (Aladdin Knowledge Systems). Если такая запись присутствует, значит, порт исправен и ключ определен ядром. Если же в списке ничего похожего нет, проанализируем системный журнал dmesg, чтобы увидеть события, происходящие в момент подключения ключа в разъем:
dmesg | tail -n 20
Если мы видим сообщения об ошибках типа device descriptor read/64, error -110, это может указывать на проблемы с питанием порта или несовместимость с контроллером USB 3.0. Попробуем переключить ключ в порт USB 2.0 (обычно черного цвета) на задней панели системного блока.
Для работы аппаратных ключей в Simply Linux требуется специализированный демон haspd. Важной особенностью является то, что драйвер зачастую требует 32-битных библиотек для корректной работы даже в 64-битной системе. Разберем процесс установки необходимых пакетов через менеджер пакетов apt-get. Выполним установку:
su -
apt-get update
apt-get install i586-haspd
Использование префикса i586- критически важно, так как бинарные файлы драйвера Sentinel HASP поставляются в 32-битном формате. Помимо самого драйвера, убедимся, что в системе установлены базовые библиотеки совместимости glibc-core.i586 и libusb.i586. Без них служба может формально запуститься, но не сможет взаимодействовать с оборудованием.
Как показывает практика, после установки пакета служба драйвера не всегда запускается автоматически. Проверим текущий статус службы haspd:
service haspd status
Если служба находится в состоянии stopped или dead, нам необходимо запустить её вручную и, что не менее важно, добавить в автозагрузку, чтобы после перезагрузки компьютера ключ не «отвалился» снова. Выполним следующие команды:
service haspd start
systemctl enable haspd
Теперь проанализируем статус еще раз. Мы должны увидеть сообщение active (running). Это означает, что демон успешно загружен и готов обрабатывать запросы от платформы 1С.
Иногда операционная система ограничивает доступ обычных пользователей к USB-устройствам, из-за чего 1С не может «достучаться» до ключа. Выясним причину, проверив права доступа в каталоге /dev/bus/usb/. Чтобы автоматизировать назначение прав, создадим файл правил udev:
nano /etc/udev/rules.d/80-hasp.rules
Вставим в него следующую строку, которая разрешит всем пользователям чтение и запись для устройств Aladdin:
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="0529", MODE="0666"
После сохранения файла (Ctrl+O, Enter, Ctrl+X) перезагрузим правила командой:
udevadm control --reload-rules && udevadm trigger
Современные версии драйверов HASP (Sentinel LDK) предоставляют удобный веб-интерфейс для мониторинга ключей. Разберем, как им воспользоваться. Откроем браузер и перейдем по адресу:
http://localhost:1947
Если страница открывается, значит, драйвер работает корректно. Перейдем в раздел Sentinel Keys. Если в списке отображается ваш ключ, значит, проблема на уровне операционной системы решена, и если 1С всё еще его не видит, нужно копать в сторону настроек самой платформы.
Платформа 1С:Предприятие при поиске ключа ориентируется на конфигурационный файл nethasp.ini. В Linux он обычно располагается по пути /opt/1cv8/conf/ или в папке с конкретной версией платформы. Даже если ключ локальный, стоит проверить настройки поиска. Рассмотрим содержимое секции [NH_COMMON]:
[NH_COMMON]
NH_USE_LOCAL = Enabled
NH_TCPIP = Disabled
Установка NH_USE_LOCAL = Enabled принудительно заставляет платформу искать локальный USB-ключ. Отключение NH_TCPIP (если вы не используете сетевые ключи на других серверах) ускорит запуск программы, так как 1С не будет тратить время на опрос сети по протоколу UDP 475.
В ядре Linux по умолчанию включена функция autosuspend, которая может переводить USB-порт в режим сна для экономии энергии. Старые модели ключей HASP могут некорректно «просыпаться», что приводит к потере лицензии во время работы. Проанализируем параметры загрузки ядра. Чтобы отключить эту функцию, отредактируем файл конфигурации GRUB:
nano /etc/sysconfig/grub2
Найдем строку GRUB_CMDLINE_LINUX_DEFAULT и добавим в конец параметра значение usbcore.autosuspend=-1. После этого обновим конфигурацию загрузчика:
update-grub
После перезагрузки система перестанет отключать питание USB-портов, что обеспечит стабильную связь платформы с аппаратным ключом защиты.
Резюме: Для успешной работы ключа HASP в Simply Linux необходимо обеспечить наличие 32-битной службы i586-haspd, проверить её статус через service, настроить права доступа через udev и при необходимости скорректировать параметры энергопотребления USB. Совокупность этих действий гарантирует стабильное обнаружение лицензии платформой 1С.