При переходе на операционную систему Linux системные администраторы и специалисты 1С часто сталкиваются с особенностями разграничения прав доступа, которые отсутствуют или работают иначе в среде Windows. Одной из типичных проблем является активация многопользовательской программной лицензии в терминальном режиме. Пользователь видит предупреждение «недоступно получение программной лицензии доступной всем пользователям», а платформа настойчиво предлагает установить лицензию только для текущего сеанса.
В этой статье мы подробно разберем, почему возникает эта ошибка, как устроена система лицензирования 1С в Linux, и рассмотрим несколько проверенных способов решения проблемы — от простых манипуляций в графическом интерфейсе до тонкой настройки прав доступа через консоль.
Для того чтобы программная лицензия (файл с расширением .lic) была доступна абсолютно всем пользователям терминального сервера, платформа 1С:Предприятие должна записать её в общий каталог системы. В операционных системах семейства Linux (таких как Ubuntu, Debian, Red Hat, Astra Linux или РЕД ОС) таким каталогом по умолчанию является:
/var/1C/licenses
По умолчанию обычные пользователи терминальных сессий не имеют прав на запись в системный каталог /var и его подкаталоги. Когда вы запускаете 1С из-под обычной учетной записи и пытаетесь активировать лицензию «Для всех пользователей данного компьютера», платформа осуществляет проверку прав на запись в эту директорию. Не обнаружив нужных привилегий, система безопасности платформы блокирует эту опцию во избежание ошибок записи и предлагает сохранить файл лицензии в домашний каталог текущего пользователя, например, в ~/.1cv8/1C/1cv8/conf/.
Если согласиться на это предложение, то работать в 1С сможет только тот пользователь, под чьей учетной записью была произведена активация. Все остальные терминальные пользователи при запуске программы получат сообщение об отсутствии свободных лицензий.
Давайте подробно разберем методы, которые помогут решить эту задачу раз и навсегда.
---
Это самый быстрый и очевидный способ, если на вашем Linux-сервере установлена графическая оболочка (GUI) и вы имеете к ней доступ через терминальное подключение (например, по протоколу VNC, XRDP или через X11 forwarding).
Проанализируем пошаговый алгоритм действий:
root с помощью утилиты sudo. Команда запуска зависит от версии установленной платформы и разрядности системы. Чаще всего исполняемый файл находится по стандартному пути. Выполните команду:
sudo /opt/1C/v8.3/x86_64/1cv8
Если вы используете 32-битную версию платформы, путь будет выглядеть так:
sudo /opt/1C/v8.3/i386/1cv8
/var/1C/licenses, поскольку процесс запущен с максимальными привилегиями.---
Если запустить графическое приложение напрямую от root по каким-то причинам не удается (например, из-за политик безопасности X-сервера), мы можем прибегнуть к обходному пути. Мы активируем лицензию локально, а затем вручную перенесем файл в общую папку и настроим корректные права.
Рассмотрим этот метод детально:
~/.1cv8/1C/1cv8/conf/ (символ ~ означает домашний каталог текущего пользователя)..lic) находится там. Вы можете проверить это командой:
ls -la ~/.1cv8/1C/1cv8/conf/
sudo mv ~/.1cv8/1C/1cv8/conf/*.lic /var/1C/licenses/
usr1cv8) и системной группе grp1cv8, а также выставить правильные права на чтение и запись. Выполните в терминале следующие команды:
sudo chown -R usr1cv8:grp1cv8 /var/1C/licenses
sudo chmod 775 /var/1C/licenses
sudo chmod 644 /var/1C/licenses/*.lic
После выполнения этих команд любой пользователь, запускающий 1С на данном сервере, сможет беспрепятственно прочитать файл лицензии из общей директории.
---
Если на вашем Linux-сервере развернута полноценная клиент-серверная архитектура (работает сервер приложений 1С:Предприятие, функционирует служба ragent), то получать лицензию непосредственно на самом сервере через графический интерфейс совсем не обязательно. Вы можете сделать это удаленно с любого рабочего места под управлением Windows.
Давайте разберем, как это работает:
1540).При таком сценарии клиентское приложение передает все данные для активации на сервер Linux. Служба ragent, запущенная от имени системного пользователя usr1cv8, сама обратится к сервису лицензирования 1С, получит файл лицензии и сохранит его в каталог /var/1C/licenses. Так как служба работает со своими штатными правами, никаких проблем с доступом к этой папке у нее не возникнет.
---
Современные версии платформы 1С:Предприятие поставляются со специализированным инструментарием для администрирования без использования графической оболочки. Для этой цели служит утилита ring.
Этот способ незаменим, если вы администрируете «чистый» Linux-сервер (minimal install) исключительно по протоколу SSH. Для автоматизации этого процесса можно использовать готовые скрипты для автоматической установки комьюнити-лицензии на сервере без графического интерфейса.
Проанализируем процесс работы с утилитой:
ring написана на Java и требует виртуальную машину для работы.
ring license list
sudo, передав утилите все необходимые параметры. Шаблон команды выглядит следующим образом:
sudo ring license activate --reg-number <Номер_Лицензии> --pin <Пинкод> --send-to-server
---
Чтобы терминальные пользователи в своих сессиях могли беспрепятственно использовать общую лицензию, они должны иметь доступ к чтению каталога /var/1C/licenses. Для этого в Linux существует специальная группа пользователей grp1cv8, создаваемая автоматически при установке платформы 1С.
Настоятельно рекомендуется добавить учетные записи всех ваших терминальных пользователей в эту группу. Для этого используйте команду:
sudo usermod -aG grp1cv8 <имя_пользователя_терминала>
После добавления пользователей в группу им потребуется завершить свои текущие терминальные сеансы (разлогиниться) и зайти в систему заново, чтобы изменения прав вступили в силу.
Соблюдение этих несложных правил администрирования прав доступа в Linux позволит вам быстро настроить совместную работу пользователей с программными лицензиями 1С и избежать досадных ошибок безопасности платформы.