Говорят, что инфокиоск — это как швейцар в отеле: он встречает гостей, предоставляет нужную информацию и следит за порядком. Только у инфокиоска в арсенале не форма и фуражка, а экран и настройки безопасности!

Режим киоска в Astra Linux: как превратить компьютер в безопасный информационный терминал

Существует два понятия: «Графический киоск» и «Системный киоск».

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

Режим системный киоск служит для ограничения прав пользователей в системе. Степень этих ограничений задается маской киоска. Ее действие аналогично действию маски umask с тем отличием, что если umask накладывается при создании новых объектов ФС, то маска киоска накладывается на права доступа к файлу при любой попытке пользователя получить доступ.

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

Особенность режима системного киоска в Операционной системе специального назначения Astra Linux Special Edition заключается в том, что данный режим работает на уровне ядра, а не на уровне пользовательских приложений.

Пример применения Режима киоска:
- Платежный терминал;
- Узкоспециализированное рабочее место пользователя (бухгалтер предприятия и т.д.).

От теории к задаче

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

Зная себя, что еще с детства я любил потыкать по углам этих рекламных баннеров, поискать обход заставок и так далее, необходимо было реализовать защищенный как от взлома, так и от шаловливых ручек студентов стенд, на котором бы крутился постоянно сайт вуза и доступ был бы только до него.

именно так, ИИ видит взлом киоска
именно так, ИИ видит взлом киоска

Установить Astra Linux было не сложной задачей, далее я уже понимал, что необходимо будет использовать киоск и выбрал графический, так как в его описание прямо звучало решение мой проблемы.

При использовании графического киоска пользователю или группе пользователей разрешается запускать только приложения, явно указанные в их профиле.

Отлично подумал я, выбрал приложение firefox, как стандартный браузер и получаю первую проблему:


После перезагрузки я получаю запущенный браузер, но как сделать чтобы запускалась только 1 страница и никакая другая?

Узнаю, что есть режим киоска еще и у firefox:

firefox http://example.com -kiosk &

О супер, но как запускать браузер сразу с параметрами?

И снова ответ на вопрос приходит из глубины сердца! Конечно же можно написать bash скрипт и запускать его как приложение в киоске.

Также, необходимо было продумать, чтобы через какое-то время неактивности, браузер возвращал бы стартовую страницу сайта для удобства пользователей.

Время писать #!/bin/bash

Сначала приведу уже готовый скрипт и далее разберем его и дополнительные настройки системы.

В комментариях подтвердилось, что старая версия имеет небольшую утечку памяти, что когда-то в зависимости от стенда приведет к крашу скрипта.


Таким образом я переписал с использование while-цила, чтобы память не утекала.

#!/bin/bash

# Отключаем экранный режим ожидания и блокировку
xset s off
xset -dpms

# Запускаем веб-браузер в полноэкранном режиме
# Замените "http://example.com" на URL вашей веб-страницы
firefox http://example.com -kiosk &

# Получаем и сохраняем идентификатор процесса браузера
browser_pid=$!

# Функция для перезапуска страницы киоска
restart_kiosk() {
    # Убиваем процесс браузера
    kill $browser_pid

    # Запускаем новый экземпляр веб-браузера
    firefox http://example.com -kiosk &

    # Обновляем идентификатор процесса браузера
    browser_pid=$!
}

# Бесконечный цикл для проверки неактивного времени пользователя
while true; do
    # Получаем текущее неактивное время пользователя в миллисекундах
    idle_time=$(xprintidle)

    # Проверяем, если время бездействия пользователя превышает 5 секунд (5000 миллисекунд)
    if (( idle_time > 120000 )); then
        # Вызываем функцию перезапуска страницы киоска
        restart_kiosk
    fi

    # Задержка на 1800 секунд (30 минут) перед следующей проверкой
    sleep 1800
done
Старая версия
#!/bin/bash
# Отключаем экранный режим ожидания и блокировку
xset s off
xset -dpms
# Запускаем веб-браузер в полноэкранном режиме
# Замените "http://example.com" на URL вашей веб-страницы
firefox http://example.com -kiosk &
# Получаем и сохраняем идентификатор процесса браузера
browser_pid=$!
# Функция для перезапуска страницы киоска
restart_kiosk() {
    # Убиваем процесс браузера
    kill $browser_pid
    # Запускаем новый экземпляр веб-браузера
    firefox http://example.com -kiosk &
    # Обновляем идентификатор процесса браузера
    browser_pid=$!
}
# Функция для проверки неактивного времени пользователя
check_idle_time() {
    # Получаем текущее неактивное время пользователя в миллисекундах
    idle_time=$(xprintidle)
    # Проверяем, если время бездействия пользователя превышает 5 секунд (5000 миллисекунд)
    if (( idle_time > 120000 )); then
        # Вызываем функцию перезапуска страницы киоска
        restart_kiosk
    fi
    # Запускаем функцию снова через 1 секунду
    sleep 1800
    check_idle_time
}
# Запускаем функцию проверки неактивного времени пользователя
check_idle_time
Исходники тык

Всю информацию, можно получить в моем репозитории, также там есть видео по настройке и работе.
https://gitflic.ru/project/gabidullin-aleks/kiosk

Комментарии в коде уже даны, но разберу основные детали:

  1. При автозапуске стенда, запускается наш скрипт и открывает браузер в режиме киоска с нужным нам сайтом;

  2. Далее, создаю функцию, которая будет перезапускать браузер и запоминать PID процесса;

  3. Вторая функция, это проверка неактивности стенда, и если пауза превышает определенный период, то вызывается функция перезапуска браузера.

Чуть подробнее про команду xprintidle.Xprintidle — это утилита, которая запрашивает у X-сервера время бездействия пользователя и выводит его на стандартный вывод (в миллисекундах).

Остался финальный шаг, настроить систему для всех случаев жизни.

  1. Сначала создадим обычного пользователя и добавим ему профиль графического киоска. По шагам показал как это сделать.

  2. Настроем автовход для этого пользователя без пароля; https://wiki.astralinux.ru/pages/viewpage.action?pageId=3276870

    открываем вход в систему
    открываем вход в систему
    Включаем автоматический вход
    Включаем автоматический вход
  3. Отключим засыпание монитора при долгой неактивности, для этого необходимо изменить параметры в домашнем каталоге пользователя, работающего в режиме графического киоска, в файлах ~/.fly/theme/default.themerc.fly-kiosk и ~/.fly/theme/current.themerc.fly-kiosk, а также /usr/share/fly-wm/theme/*default.themerc.fly-kiosk и /usr/share/fly-wm/theme/*current.themerc.fly-kiosk:
    ScreenSaverDelay=0
    LockerOnSleep=false
    LockerOnDPMS=false
    LockerOnLid=false
    LockerOnSwitch=false

  4. А так же удаляем файл powerdevil.desktop из каталогов /etc/xdg/autostart и ~/.config/autostart.

Итоговый результат

Таким образом мы получаем отказоустойчивый информационный киоск, который:

  1. Не боится выключения света или перезагрузки;

  2. Запущен от обычного пользователя, который не представляет опасности для системы;

  3. Браузер также функционирует в режиме киоска, что скрывает все кнопки по закрытию браузера и использование горячих клавиш;

  4. Наш стенд автоматически возвращается на главную страницу после определенного времени простоя;

А выглядит это так
А выглядит это так

«Теперь ваш компьютер — это не просто устройство для работы, но и надёжный страж информации, готовый предоставить нужные данные в любой момент. С интерактивным киоском в Astra Linux вы открываете дверь в мир безопасности и удобства!»

В статье обновлен код bash-скрипта от 01.07.2025

Комментарии (24)