Настройка STAL

Для настройки STAL необходимо отредактировать конфигурационные файлы /etc/stal/stal_service.json и /etc/stal/stal_proxy.json.

Параметры внутри конфигурационных файлов имеют следующую структуру:

{
	"параметр": "значение",
	"параметр": [ "значение 1", ..., "значение N" ],
	"параметр": [ "значение 1", "%{значение 2}", ..., "значение N" ],
	"параметр": [ "аргумент:%{значение}" ]
}
BASH

Поля %{значение} используются для подстановки служебных значений.

Целочисленные значения не заключаются в кавычки.

Пример файла /etc/stal/stal_proxy.json:

{
    "debug:level": "debug",
	"transport:debug": false,

    "listen:port": 3389,
    "listen:timeout": 10,

    "#kerberos:realm": "UVEON",
	"#kerberos:keytab": "/etc/stal/termsrv.keytab",

    "#x11rdp:path": "/usr/libexec/stal/freerdp-shadow-cli",
    "#x11rdp:args": [ "/ipc-socket:%{socket}" ]  
}
BASH

Пример файла /etc/stal/stal_service.json:

{     "debug:level": "debug",

    "display:min": 101,
    "display:max": 901,

    "#runtime:dir": "/run/stal",
    "#runtime:xdg": "/run/user/%{uid}",

    "#xvfb:path": "/usr/bin/Xorg",
    "#xvfb:args": [ ":%{display}", "-nolisten", "tcp", "-logfile", "/dev/null", "-auth", "%{authfile}", "-config", "stal.conf", "-depth", "%{depth}", "+extension", "DAMAGE", "+extension", "MIT-SHM", "+extension", "RANDR", "+extension", "XFIXES", "+extension", "XTEST" ],
    "#xvfb:sock": "/tmp/.X11-unix/X%{display}",

    "#pam:service": "stal",

    "session:path": "/usr/bin/fly-wm",
    "session:args": [ ],
    "session:programs": "/etc/stal/programs.json",
    "seamless:timeout": 60,

    "#helper:notification": "/usr/libexec/stal/stal_notify",
    "#hash:path": "/usr/bin/winpr-hash",
    "#xrandr:path": "/usr/bin/xrandr",

    "#tdsk:enable": false,
    "#tdsk:fstype": "ext4",
    "#tdsk:option": ""
}
BASH

Список доступных параметров конфигурационного файла /etc/stal/stal_proxy.json приведен в таблице.

Описание параметров файла конфигурации сервиса proxy

ПараметрНазначениеЗначение по умолчанию
debug:levelУровень отладочных сообщений. Возможные значения: debug, info, nonedebug
transport:debug

Управление режимом отладочного журналирования для RDP-протокола (freerdp-shadow)

По умолчанию режим отладочного журналирования выключен. Для включения необходимо присвоить параметру значение true

false
listen:portСервисный порт доступа3389
listen:timeoutВремя ожидания клиентского подключения, секунды10
kerberos:realmДомен KerberosUVEON
kerberos:keytab

Указание keytab-файла для аутентификации Kerberos

Файл termsrv.keytab после установки не существует, его необходимо создать на контроллере домена и скопировать в /etc/stal/

/etc/stal/termsrv.keytab
x11rdp:pathСистемная программа запуска RDP-протокола (поставляется с пакетом freerdp)/usr/libexec/stal/freerdp-shadow-cli
x11rdp:args

Список аргументов для команды RDP-протокола

/ipc-socket:%{socket}

Список доступных параметров конфигурационного файла /etc/stal/stal_service.json приведен в таблице.

Описание параметров файла конфигурации сервиса stal

ПараметрНазначениеЗначение по умолчанию
debug:level

Уровень отладочных сообщений.

Возможные значения: debug, info, none

debug
display:minНижняя граница нумерации сессий101
display:maxВерхняя граница нумерации сессий (влияет только на допустимое максимальное количество сессий на сервере, limits = display:max - display:min)901
runtime:dirРабочий каталог сервиса STAL/run/stal
runtime:xdgXDG-каталог сессии/run/user/%{uid}
xvfb:pathПуть запуска X11-сервера/usr/lib/xorg/Xorg
xvfb:args

Список аргументов X11-сервера.

Возможны подстановки служебных значений: %{display}, %{authfile}, %{depth}, %{width}, %{height}

Не задано
xvfb:sock

Формат сокета для X11-сервера

Возможна подстановка служебного значения: %{display}

/tmp/.X11-unix/X%{display}
pam:serviceНаименование сервиса доступа PAMstal
session:pathКоманда запуска сессии/usr/bin/fly-wm
session:argsСписок аргументов для команды сессииНе задано
session:programsФайл списка разрешенных программ для режима seamless, формат json/etc/stal/programs.json
seamless:timeoutТаймаут закрытия программной сессии60
applications:skipСписок запрещенных программ, которые не будут опубликованы. В значении параметра должен указываться ярлык программы: <имя программы>.desktop1cestart.desktop
helper:notificationСлужебная программа для информирования в сессии через механизм нотификаций (всплывающих сообщений)/usr/libexec/stal/stal_notify
hash:pathСистемная программа для генерации хеш-значения NTLM (поставляется с пакетом freerdp)/usr/bin/winpr-hash
xrandr:pathСистемная программа для изменения геометрии экрана в сессии/usr/bin/xrandr
tdsk:enableСлужебный параметр. Изменять не следуетfalse
tdsk:fstypeСлужебный параметр. Изменять не следуетext4
tdsk:optionСлужебный параметр. Изменять не следуетНе задано

Задание списка разрешенных программ

Список разрешенных программ создается двумя механизмами, дополняющими друг друга:

  • автоматически, через сканирование каталога /usr/share/applications файлов desktop;
  • вручную, дополнительно файлом /etc/stal/programs.json.

По умолчанию в файле /etc/stal/programs.json задается список дополнительных программ, которые не создавали файл desktop в системном каталоге /usr/share/applications. Для включения сканирования списка программ нужно установить значение параметра session:programs в конфигурационном файле /etc/stal/stal_service.json.

Параметры внутри файла /etc/stal/programs.json имеют следующую структуру:

[
	{
		"name": "наименование приложения",
		"path": "путь для запуска приложения" ,
		"args": [ "аргумент запуска 1", ..., "аргумент запуска N" ],
	}
]
BASH

Пример файла:

[
    {
        "name": "Midnight Commander",
        "path": "/usr/bin/xterm",
        "args": [ "-e", "/usr/bin/mc" ]
    },
    {
        "name": "Chromium Gost",
        "path": "/usr/bin/chromium-gost",
        "args": []
    }
]
BASH

Консольные программы необходимо запускать через графический терминал (см. пример для Midnight Commander).

Несистемные программы, которые требуют дополнительных настроек переменных среды, например LD_LIBRARY_PATH, следует запускать отдельным файлом сценария (скриптом), в котором все эти переменные должны быть определены.

Пример файла сценария для определения переменных среды и запуска программы RuBackup Manager:

#!/bin/bash
export PATH=$PATH:/opt/rubackup/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/rubackup/lib

/opt/rubackup/bin/rbm

exit 0
BASH

Задание списка запрещенных программ

В некоторых случаях может потребоваться задать список запрещенных программ, которые не должны быть опубликованы сервером STAL.

Такая необходимость может возникнуть в случае, если программа может выполняться в фоновом режиме. Например, в списке программ после установки есть три исполняемых экземпляра:

  • 1C:Enterprise x64;
  • 1C:Enterprise - Thin client x64;
  • 1C:Enterprise x64 - этот экземпляр запускает подпрограмму 1cestart, которая  выполняется только в фоновом режиме.   

Список запрещенных программ задается через параметр applications:skip конфигурационного файла /etc/stal/stal_service.json.  По умолчанию в нем уже хранится значение для запрета программы из приведенного выше примера - 1cestart.desktop.