Рассмотрим распространенную ситуацию: на сервере под управлением ОС Linux (в данном случае РедОС) опубликована файловая база 1С через веб-сервер Apache. Для тех, кто только планирует развертывание системы, может быть полезен сценарий python для автоматизации установки 1С и PostgreSQL, позволяющий быстро подготовить окружение. В сам сервер вставлен аппаратный USB-ключ лицензии HASP. При этом локальный запуск тонкого клиента проходит успешно — лицензия подхватывается. Однако при попытке открыть базу через браузер (веб-клиент), даже с самого сервера, система сообщает об отсутствии лицензии. Выясним, почему так происходит и как это исправить.
Перед тем как углубляться в настройки, важно убедиться, что проблема не связана со сложными сетевыми конфигурациями или отсутствием необходимых библиотек. Например, стоит заранее изучить особенности настройки Astra Linux с установкой зависимостей, так как нехватка пакетов в отечественных дистрибутивах часто становится камнем преткновения. В исходной ситуации использовалась схема с "прокладкой" в виде другого компьютера с 1С:Линк. Чтобы исключить лишние переменные, проведем тест в максимально простой среде.
http://127.0.0.1/basename или http://localhost/basename (где basename — имя вашей публикации).Если даже при таком локальном подключении веб-клиент не видит лицензию, значит, проблема именно во взаимодействии веб-сервера Apache и драйвера ключа HASP на одной машине. Сеть и другие компьютеры здесь ни при чем. Подобная локализация — важная часть построения защищенной IT инфраструктуры малого предприятия на базе Linux.
Ключ к пониманию проблемы лежит в том, от имени какого пользователя запускаются разные приложения.
apache, www-data, httpd и т.д. В целях безопасности этот пользователь имеет очень ограниченные права и, что самое важное, по умолчанию не имеет прямого доступа к оборудованию, включая USB-порты.Когда вы подключаетесь через веб-клиент, за получение лицензии отвечает не сам клиент в браузере, а модуль расширения веб-сервера 1С на сервере. Этот модуль выполняется в рамках процесса Apache и наследует все его ограничения в правах. Именно поэтому он не может "увидеть" USB-ключ, который легко видит тонкий клиент, запущенный с более высокими привилегиями. В некоторых случаях администраторы также настраивают дополнительные уровни защиты, такие как публикация сервиса с использованием клиентского SSL сертификата, что еще сильнее ограничивает несанкционированный доступ.
Важный момент: тот факт, что ключ однопользовательский, не является причиной проблемы. Модуль расширения веб-сервера 1С способен корректно работать и раздавать веб-клиенту лицензию даже с однопользовательского аппаратного ключа.
Чтобы разрешить процессу Apache обращаться к USB-ключу, нужно настроить для этого устройства специальные права на уровне операционной системы. Если же вы решите вовсе отказаться от аппаратных ключей, рекомендуем изучить установку комьюнити-лицензии разработчика на сервер 1С, которая настраивается программно. Однако для USB-ключа в Linux за права доступа отвечает подсистема udev. Разберем настройку по шагам.
Определяем идентификаторы ключа
Подключите ключ к серверу и выполните в терминале команду lsusb. Вы увидите список всех подключенных USB-устройств. Найдите в нем ваш ключ, он обычно определяется как "Aladdin" или "SafeNet".
Пример вывода:
Bus 001 Device 004: ID 0529:0001 Aladdin Knowledge Systems HASP v0.06
Здесь нам важны два параметра: idVendor=0529 и idProduct=0001. Запишите их.
Создаем файл правил udev
В директории /etc/udev/rules.d/ нужно создать новый файл правил. Назовем его, например, 99-hasp.rules. Для создания и редактирования файла потребуются права суперпользователя (sudo).
sudo nano /etc/udev/rules.d/99-hasp.rules
Заполняем файл правил
В открывшийся файл добавьте одну строку, подставив свои `idVendor` и `idProduct` из первого шага:
SUBSYSTEM=="usb", ATTR{idVendor}=="0529", ATTR{idProduct}=="0001", MODE="0666"
Разберем, что означает эта строка:
SUBSYSTEM=="usb" — правило применяется к устройствам на шине USB.ATTR{idVendor}=="0529", ATTR{idProduct}=="0001" — правило сработает только для устройства с нашими идентификаторами.MODE="0666" — это самое важное. Данный параметр устанавливает права доступа к файлу устройства: чтение и запись для всех пользователей в системе, включая системного пользователя Apache.Сохраните файл и закройте редактор.
Применяем новые правила
Чтобы система перечитала правила и применила их, выполните в терминале следующие команды:
sudo udevadm control --reload-rules
sudo udevadm trigger
Как более простой, но и более долгий вариант, можно просто перезагрузить сервер.
После выполнения этих шагов процесс Apache получит необходимые права для доступа к USB-ключу, и модуль расширения 1С сможет успешно получить лицензию для веб-клиента. Попробуйте снова открыть базу в браузере — проблема должна быть решена.