Параметры конфигурирования STAL

Для настройки STAL используются конфигурационные файлы /etc/stal/stal_service.json, /etc/stal/stal_proxy.json и /etc/stal/stal_kiosk.json.

В большинстве случаев STAL не требует изменения конфигурационных файлов после установки. Описание файлов приведено для расширенной настройки.

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

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

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

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

Файл /etc/stal/stal_proxy.json определяет параметры работы сервиса stal-proxy, обеспечивающего передачу трафика от клиенских соединений на локальный сокет. Пример файла /etc/stal/stal_proxy.json:

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

    "listen:port": 3389,
 	"listen:addr": "0.0.0.0",
    "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}", "/max-connections:1" ],
    "#tcp:keepalive:enable": true,
    "tcp:keepalive:delay": 5,
    "tcp:keepalive:retries": 3,
    "tcp:keepalive:interval": 2
}
BASH

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

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

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

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

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

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

Указание keytab-файла для аутентификации Kerberos для учетной записи сервера STAL.

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

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

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

"/ipc-socket:%{socket}", "/max-connections:1"
tcp:keepalive:enable

Управление механизмом keepalive по протоколу TCP. Механизм keepalive помогает разорвать зависшее соединение с минимальным временем ожидания.

При значении false подключение к сессии после разрыва соединения и его восстановления возможно только по прошествии некоторого времени.

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

true
tcp:keepalive:delay

Время (в секундах) простоя соединения, по прошествии которого TCP начнёт отправлять проверочные пакеты

5
tcp:keepalive:retries

Максимальное число проверок TCP, отправляемых перед сбросом соединения

3
tcp:keepalive:interval

Время в секундах между отправками отдельных проверочных пакетов

2

Некоторые параметры в json-файлах закомментированы - перед ними есть символ «#». Это значит, что такой параметр используется со значением по умолчанию. Чтобы его изменить, нужно удалить символ «#» и присвоить нужное значение параметру.

Пример:

по умолчанию в качестве домена Kerberos в параметре kerberos:realm файла /etc/stal/stal_proxy.json указан UVEON. Чтобы указать другой домен, например, example.local, нужно преобразовать параметр "#kerberos:realm": "UVEON" к "kerberos:realm": "example.local".

Файл /etc/stal/stal_service.json определяет параметры работы основного сервиса stal, обеспечивающего запуск и останов графических сессий пользователя и реализующего основной функционал STAL. Пример файла /etc/stal/stal_service.json:

{     
	"debug:level": "debug",

    "#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",

 	"users:limit": 200,
    "sessions:limit": 1000,

	"#groups:allow": [],

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

    "#seamless:timeout": 60,
    "#inactivity:timeout": 0,
    "#duration:timeout": 0,
    "#disconnect:timeout": 0,
    "#clipboard:limit": 0,

    "#redirect:drive": true,
    "#redirect:print": true,
    "#redirect:smartcard": true,
    "#clipboard:file": true,
    "#clipboard:server": true,
    "#clipboard:client": true,

    "#connect:policy": "PrevReplace",
	"#session:disconnected:freeze": false,

	"#rdp:keepalive:interval": 0,
	"#rdp:keepalive:failures": 0,

    "applications:skip": [ "1cestart.desktop" ],

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

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

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

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

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

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

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

debug
runtime:dir Рабочий каталог сервиса STAL /run/stal
runtime:xdg XDG-каталог сессии /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 Идентификатор сервиса доступа PAM stal

users:limit

Ограничение на количество пользователей, подключившихся к STAL200

sessions:limit

Ограничение на количество сессий, запущенных на STAL1000

groups:allow

Список разрешенных групп пользователей для аутентификации на сервере STAL.

Если параметр закомментирован, то аутентификация разрешена всем пользователям, иначе только пользователям, которые состоят в перечисленных группах.

Пример: "groups:allow": [ "group1", "group2" ]

[]
session:path Клиентская программа, запускаемая в сессии /usr/bin/fly-wm
session:args Список аргументов для запуска клиентской программы Не задано
session:programs Файл списка разрешенных программ для режима seamless, формат json /etc/stal/programs.json
seamless:timeout Таймаут жизни программной сессии (seamless) после отключения, в секундах 60
inactivity:timeout Лимит бездействия пользовательской сессии по умолчанию, в секундах 0
duration:timeout Лимит продолжительности работы пользовательской сессии по умолчанию, в секундах 0
disconnect:timeout Таймаут жизни пользовательской сессии после отключения, в секундах 0
clipboard:limit Максимальный лимит буфера обмена в байтах (0: не ограничено). Для блокировки буфера обмена нужно использовать параметры clipboard:server и clipboard:client 0
redirect:drive Политика для перенаправления дисков/каталогов в RDP. По умолчанию включена true
redirect:print Политика для перенаправления принтеров в RDP. По умолчанию включена true
redirect:smartcard Политика для перенаправления смарт-карт в RDP. По умолчанию включена true
clipboard:file Политика для перенаправления файлов через буфер обмена на сервер. По умолчанию включена true
clipboard:server Политика для перенаправления буфера обмена на сервер. По умолчанию включена true
clipboard:client Политика для перенаправления буфера обмена на клиент. По умолчанию включена true
connect:policy

Политика для множественного соединения в сессию.

Возможные значения: NextDeny (если сессия занята, следующее соединение в нее отменяется), PrevReplace (если сессия занята, предыдущее соединение в нее отменяется), MultiAllow (разрешено множественное соединение)

PrevReplace

session:disconnected:freeze

Приостанов («заморозка») группы выполняемых процессов сессии при отсутствии подключений. Параметр предоставляет возможность сэкономить ресурсы процессора.

Возможные значения:

  • false - отключено;
  • true - включено
false

rdp:keepalive:interval

Время в секундах между отправками отдельных проверочных пакетов для механизма keepalive по протоколу RDP

0

rdp:keepalive:failures

Максимальное число ошибок, допустимых перед сбросом соединения

0
applications:skip Список запрещенных программ, которые не будут опубликованы. В значении параметра должен указываться ярлык программы: <имя программы>.desktop 1cestart.desktop
helper:notification Служебная программа для информирования в сессии через механизм нотификаций (всплывающих сообщений) /usr/libexec/stal/stal_notify
xrandr:path Системная программа для изменения геометрии экрана в сессии /usr/bin/xrandr
tdsk:enable Служебный параметр. Менять не следует false
tdsk:fstype Служебный параметр. Менять не следует ext4
tdsk:option Служебный параметр. Менять не следует Не задано

Файл /etc/stal/stal_kiosk.json определяет свойства окон приложений, запускаемых в режиме доставки приложений (киоск)

Функциональность режима приложений stal_kiosk поддерживается в ОС Astra Linux Special Edition только для уровня защищенности «Орел».

Влияние stal_kiosk на поведение окна

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

[
    {
        "wm:window:type": "dialog",
        "wm:class": "1cv8*",
        "wm:window:role": "GtkFileChooserDialog",
        "frame": false,
        "fullscreen": true
    },
    {
        "wm:window:type": "dialog",
        "wm:class": "1cv8*",
        "frame": false,
        "fullscreen": false
    },
    {
        "wm:class": "xterm",
        "frame": false,
        "fullscreen": true
    },
    {
        "wm:window:type": "normal",
        "wm:class": "*",
        "frame": false,
        "fullscreen": true
    },
    {
        "wm:window:type": "dialog",
        "wm:class": "*",
        "frame": true,
        "fullscreen": false
    }
]
BASH

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

Для получения значения тега для определенного окна нужно:

  • запустить окно нужного приложения;
  • запустить утилиту xprop из интерфейса командной строки:
:~$ xprop
BASH
  • выбрать левой кнопкой мыши открытое окно, теги которого необходимо получить;
  • информация по тегам утилиты xprop, назначенных для этого окна, отобразится в интерфейсе командной строки, пример:
WM_NAME(COMPOUND_TEXT) = "Домашняя - Менеджер файлов"
_NET_WM_NAME(UTF8_STRING) = "Домашняя - Менеджер файлов"
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x3, 0x3e, 0x7e, 0x0, 0x0
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL
_XEMBED_INFO(_XEMBED_INFO) = 0x0, 0x1
WM_CLIENT_LEADER(WINDOW): window id # 0x3200008
WM_HINTS(WM_HINTS):
                Client accepts input or input focus: True
                window id # of group leader: 0x3200008
WM_CLIENT_MACHINE(STRING) = "cl-00000"
_NET_WM_PID(CARDINAL) = 1721
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 52429217
WM_CLASS(STRING) = "fly-fm-service", "fly-fm-service"
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_NORMAL_HINTS(WM_SIZE_HINTS):
                user specified size: 1333 by 913
                program specified minimum size: 182 by 219
                window gravity: Static
BASH
Описание параметров файла конфигурации stal_kiosk

ПараметрНазначение
wm:window:type

Соответствует тегу _NET_WM_WINDOW_TYPE утилиты xprop.

Допустимые значения: «dialog», «utility», «splash», «menu», «popup_menu», «tooltip», «notification», «normal»

wm:class

Соответствует тегу WM_CLASS утилиты xprop

wm:window:role

Соответствует тегу WM_WINDOW_ROLE утилиты xprop

frame

Определяет реализуемое действие: использовать (true) или запретить (false) дополнительное оформление окна

fullscreen

Определяет реализуемое действие: использовать (true) или запретить (false) полноэкранный режим для окна

Главное окно приложения всегда запускается в полноэкранном режиме!