Говорят, что инфокиоск — это как швейцар в отеле: он встречает гостей, предоставляет нужную информацию и следит за порядком. Только у инфокиоска в арсенале не форма и фуражка, а экран и настройки безопасности!
Режим киоска в 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
Комментарии в коде уже даны, но разберу основные детали:
При автозапуске стенда, запускается наш скрипт и открывает браузер в режиме киоска с нужным нам сайтом;
Далее, создаю функцию, которая будет перезапускать браузер и запоминать PID процесса;
Вторая функция, это проверка неактивности стенда, и если пауза превышает определенный период, то вызывается функция перезапуска браузера.
Чуть подробнее про команду xprintidle.
Xprintidle — это утилита, которая запрашивает у X-сервера время бездействия пользователя и выводит его на стандартный вывод (в миллисекундах).
Остался финальный шаг, настроить систему для всех случаев жизни.
-
Сначала создадим обычного пользователя и добавим ему профиль графического киоска. По шагам показал как это сделать.
-
Настроем автовход для этого пользователя без пароля; https://wiki.astralinux.ru/pages/viewpage.action?pageId=3276870
открываем вход в систему Включаем автоматический вход Отключим засыпание монитора при долгой неактивности, для этого необходимо изменить параметры в домашнем каталоге пользователя, работающего в режиме графического киоска, в файлах ~/.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
А так же удаляем файл powerdevil.desktop из каталогов /etc/xdg/autostart и ~/.config/autostart.
Итоговый результат
Таким образом мы получаем отказоустойчивый информационный киоск, который:
Не боится выключения света или перезагрузки;
Запущен от обычного пользователя, который не представляет опасности для системы;
Браузер также функционирует в режиме киоска, что скрывает все кнопки по закрытию браузера и использование горячих клавиш;
Наш стенд автоматически возвращается на главную страницу после определенного времени простоя;

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