# Режим киоска в РЕД ОС

Режим киоска в РЕД ОС реализуется с помощью доработанных командной оболочки Bash
и окружения рабочего стола MATE.

Базовый функционал киоска реализован в нескольких пакетах и находится в
выключенном состоянии. Режим киоска с утилитами для его настройки становится
доступным после установки пакета redos-kiosk-utils.

## Ограничения при включённом режиме киоска

При включённом режиме киоска пользователю становятся недоступными:
1) запуск программ с графическим интерфейсом, кроме явно разрешённых (ярлыки
   таковых приложений находятся на Рабочем столе),
2) выполнение сценариев на любом языке при явном их запуске пользователем,
3) запуск на выполнение файлов с установленным битом SUID,
4) изменение свойств и содержимого главной панели на Рабочем столе,
5) изменение содержимого Рабочего стола (создание/удаление/изменение ярлыков,
   создание/удаление/изменение иных файлов),
6) автоматическое монтирование внешних накопителей,
7) смена виртуальной консоли по сочетанию клавиш Ctrl+Alt+Fn.

Также имеются следующие ограничения в режиме киоска:
1) главная панель Рабочего стола в режиме киоска не имеет кнопки главного меню
   (типа «Пуск») и пиктограмм быстрого запуска приложений. Кнопки выхода из
   сессии, блокировки экрана и выключения/перезагрузки ПК вынесены на главную
   панель слева;
2) Центр управления МАТЕ недоступен, но, даже в случае его ручного запуска,
   приложение блокируется;
3) блокирован запуск Терминала МАТЕ;
4) из консольных утилит блокированы dconf и gsettings с целью исключения
   изменений настроек как МАТЕ, так и графической системы;
5) просмотр справочной системы недоступен как при вызове по клавише F1, так и по
   нажатию кнопки «Помощь»;
6) дополнительное усечение прав и возможностей пользователя путём запуска
   приложений в «песочнице» (Firejail).

## Включение режима киоска (kiosk-mode-on)

В текущей версии для настройки режима киоска имеются как консольные утилиты, так и графический интерфейс (GUI). Обе возможности требуют прав суперпользователя root.

Для включения режима киоска конкретному пользователю применяется команда
kiosk-mode-on с указанием имени этого пользователя (-u или --username) и
перечнем приложений (-a или --appname), которые разрешаются к запуску
пользователем в данном режиме.
Также доступны следующие опции:
* -t | --timelock TIME — время неактивности в сеансе (в минутах) до блокировки экрана. Если не указано или указано 0, блокировка экрана отключается;
* -b | --blockbtn — отобразить кнопку блокировки экрана на панели;
* -i | --autohide — включить автоматическое скрытие главной панели;
* -s | --systrayhide — убрать системную область с главной панели;
* -p | --poweroff — включить возможность выключения компьютера кнопкой питания на системном блоке;
* -L | --withuserlayout — включить возможность пользователю выключать и перезагружать устройство с кнопок на панели без повышенных привилегий;
* -f | --firejail [=<опции firejail>] — запускать все разрешённые приложения в «песочнице». Опционально можно указать дополнительные настройки Firejail;
* -o | --singlemode APP_NAME [URL] — включить режим одного приложения. Для браузеров необходимо указать URL.

Приложения указываются путём перечисления имён desktop-файлов, имеющихся в
каталоге /usr/share/applications без указания суффикса «.desktop». Иные
приложения не допускаются к разрешению в режиме киоска.

Например:

kiosk-mode-on -u sidorov -a libreoffice-writer,thunderbird -t 5

или

kiosk-mode-on -u ivanov -a firefox -f="--net=enp1s3"

По умолчанию на главной панели Рабочего Стола имеются кнопки выключения,
перезагрузки системы и завершения сеанса/смены пользователя, причём для
перезагрузки или выключения системы потребуется ввести пароль администратора
(root).

## Режим одного приложения

С помощью ключа -o или --singlemode можно включить режим киоска, в котором запускается только одно указанное приложение во весь экран. В этом режиме другие опции, такие как -t, -b, -i, -s, -p, -L, -f, не допускаются, за исключением -u для указания имени пользователя.

Для браузеров (chromium-browser, opera, yandex-browser, google-chrome, firefox) необходимо указать URL, который будет открыт в режиме киоска. Для других приложений дополнительные аргументы (включая URL) не требуются и не используются.

Примеры:

Включение режима киоска для пользователя ivanov с запуском браузера Chromium и открытием сайта red-soft.ru:

kiosk-mode-on -u ivanov -o chromium-browser red-soft.ru

Включение режима киоска для пользователя petrov с запуском калькулятора MATE:

kiosk-mode-on -u petrov -o mate-calc

В этом режиме рабочий стол и панели настраиваются таким образом, чтобы обеспечить запуск и отображение только одного указанного приложения, скрывая или отключая другие элементы интерфейса.

## Выключение режима киоска (kiosk-mode-off)

С целью выключения режима киоска и возврата настроек пользователя к
"докиосковому" состоянию используется команда kiosk-mode-off с указанием имени
этого пользователя (-u или --username). Например:

kiosk-mode-off -u sidorov

## Графический интерфейс (GUI)

Начиная с версии 0.18 пакета redos-kiosk-utils, добавлен графический интерфейс для удобства настройки режима киоска.

GUI предоставляет следующие возможности:

* Выбор пользователя - в выпадающем списке можно выбрать пользователя, для которого будет настраиваться режим киоска;
* Настройка времени бездействия - возможность указать время бездействия (в минутах) перед блокировкой экрана;
* Выбор разрешённых приложений - список всех доступных приложений из каталога /usr/share/applications. Можно отметить галочками те приложения, которые будут доступны пользователю в режиме киоска;
* Опции интерфейса:
   1) отображение кнопки блокировки экрана;
   2) автоматическое скрытие главной панели;
   3) скрытие системной области уведомлений;
   4) разрешить выкл. ПК кнопкой питания;
   5) разрешить выкл./перезагрузку ПК без привилегий;
* Использование Firejail - можно указать ключи для запуска разрешённых приложений в «песочнице» Firejail;
* Включение/выключение режима киоска - после настройки параметров можно включить или выключить режим киоска для выбранного пользователя;
* Настройка режима одного приложения.

GUI также ведёт логирование всех действий в файл /var/log/kiosk-mode/gui_kiosk.log.

Для использования графического интерфейса:

1) Открыть "Главное меню" (находится в левом нижнем углу экрана);
2) В открывшемся меню найдите и выберите категорию "Администрирование";
3) В списке доступных инструментов администрирования найдите пункт "Настройка киоска";
4) После запуска программы появится запрос на ввод пароля суперпользователя (root);
5) Настройте параметры режима киоска через интерфейс и примените изменения.

Настройка режима одного приложения в графическом интерфейсе:
  1) В разделе выбора режима выберите "Режим одного приложения";
  2) В списке выберите приложение, которое будет запущено в режиме киоска;
  3) Если выбранное приложение является браузером (например, Chromium, Firefox и т.д.), укажите URL, который будет открыт;
  4) Нажмите кнопку "Включить режим киоска" для применения настроек.

## Обновление настроек режима киоска (kiosk-mode-up)

Начиная с версии 0.23 добавлена утилита kiosk-mode-up — обновление настроек уже включённого режима киоска без его полного отключения и повторного включения.

Режимы работы:

1) Интерактивный — просто запустите "sudo kiosk-mode-up"

Утилита последовательно спросит, какие настройки нужно изменить.

2) Неинтерактивный — указываются только нужные параметры "sudo kiosk-mode-up -u USERNAME [ОПЦИИ]"

Доступные опции:
-u USERNAME Обязательно в неинтерактивном режиме — имя киоск-пользователя
-a APP1,APP2,… Обновить список разрешённых приложений (через запятую, без .desktop)
-t TIME Время до блокировки экрана (в минутах), 0 = отключено
-b yes|no Показать/скрыть кнопку блокировки экрана
-s yes|no Скрыть/показать системный трей
-L yes|no Разрешить выключение/перезагрузку без прав root
-i yes|no Автоскрытие главной панели
-p yes|no Разрешить выключение ПК кнопкой питания
-q Тихий режим
-h Подробная справка

Параметры yes/no понимают любые варианты: yes Yes, YES, no No, NO.

Примеры:

Интерактивное обновление:
sudo kiosk-mode-up

Обновить приложения и отключить блокировку:
sudo kiosk-mode-up -u kioskuser -a firefox,vlc -t 0

Включить кнопку блокировки и автоскрытие панели:
sudo kiosk-mode-up -u kioskuser -b yes -i yes

Полностью отключить всё (тихий режим):
sudo kiosk-mode-up -u kioskuser -t 0 -b no -s no -L no -i no -p no -q

## Обновление через графический интерфейс (redos-kiosk-gui)

Начиная с версии 0.23, приложение redos-kiosk-gui полностью поддерживает обновление настроек через kiosk-mode-up.

Пошаговая инструкция обновления через GUI:
1) Открыть "Главное меню" (находится в левом нижнем углу экрана);
2) В открывшемся меню найдите и выберите категорию "Администрирование";
3) В списке доступных инструментов администрирования найдите пункт "Настройка киоска";
4) Ввести пароль суперпользователя (root);
5) Выбрать пользователя, у которого уже включён режим киоска (режим одного приложения не поддерживается для обновления);
6) Нажать кнопку "Изменить настройки";
7) Внести нужные изменения (приложения, время блокировки, опции панели и т.д.);
8) Нажать кнопку "Принять";
9) В появившемся диалоге подтвердить изменения кнопкой "Продолжить";
10) Дождаться завершения работы утилиты.

Все действия логируются в файл /var/log/kiosk-mode/gui_kiosk.log.