Astra Linux Special Edition (SE) представляет собой защищённую операционную систему, разработанную для работы с конфиденциальной информацией. Ключевой особенностью является строгая модель безопасности, включающая мандатный контроль целостности (MCS), контроль доступа на основе ролей (RBAC) и изоляцию сессий. В таких условиях традиционные инструменты для создания графических интерфейсов, такие как zenity или kdialog, не подходят из-за несоответствия требованиям безопасности.
Для решения этой проблемы в Astra Linux SE разработана утилита fly-dialog, интегрированная в архитектуру защищённой операционной системы. Она позволяет создавать безопасные графические интерфейсы в shell-скриптах, обеспечивая соответствие строгим требованиям безопасности и надёжности.
Fly-dialog: Основные характеристики
Fly-dialog — это инструмент, разработанный компанией РУСБИТ, специально для использования в Astra Linux SE. Он основан на фреймворке Qt, что обеспечивает высокую производительность и безопасность. Утилита поддерживает широкий спектр диалоговых окон, включая информационные сообщения, ввод паролей, выбор файлов и каталогов, а также отображение прогресса выполнения операций.
Поддерживаемые типы диалогов
Fly-dialog поддерживает широкий спектр типов диалоговых окон, что позволяет решать различные задачи:
- Информационное сообщение:
--msgbox — простое сообщение.
--warningyesno, --warningyesnocancel — предупреждение с кнопками выбора.
--error — сообщение об ошибке.
- Ввод данных:
--inputbox, --password — поля для ввода текста и паролей.
--loginpassword, --preloginpassword — формы для ввода логина и пароля.
--textbox — отображение содержимого файла.
--textinputbox — многострочное текстовое поле.
- Выбор данных:
--combobox, --menu — выпадающий список или меню.
--checklist, --radiolist — списки с возможностью одиночного или множественного выбора.
--getopenfilename, getsavefilename — выбор существующего или нового файла.
--getexistingdirectory — выбор каталога.
--getcolor — выбор цвета.
- Прогресс выполнения операций:
--progressbar — индикатор выполнения длительной задачи.
- Уведомления:
--passivepopup — кратковременное всплывающее сообщение.
Каждый из этих типов диалогов можно настроить, используя дополнительные параметры, такие как заголовок, иконка, геометрия окна и стили оформления.
Примеры использования
Простое сообщение
Для вывода информационного сообщения используется команда:
fly-dialog --msgbox "Операция завершена успешно."
Подтверждение действия
Для подтверждения действия используется диалог с кнопками выбора:
fly-dialog --yesno "Вы уверены, что хотите перезагрузить систему?"
Код возврата:
- 0 — «Да»
- 1 — «Нет»
Ввод пароля
Для ввода пароля используется:
fly-dialog --password "Введите пароль для доступа к защищённому разделу:"
Выбор каталога
Для выбора каталога используется:
fly-dialog --getexistingdirectory /home/user
Работа с прогресс-баром
Диалог с прогресс-баром позволяет визуализировать выполнение длительных задач. Он работает через D-Bus, что позволяет управлять прогрессом из внешнего скрипта.
Пример скрипта для управления прогрессом
Создайте скрипт fly-dialog-progressbar.sh:
#!/bin/sh
# Считываем D-Bus-путь из стандартного потока
read line
dbusRef=$line
# Показываем кнопку отмены
qdbus $dbusRef showCancelButton "true"
# Шаг 1
sleep 1
qdbus $dbusRef Set ru.rusbitech.flydialog.ProgressDialog value 1
qdbus $dbusRef setLabelText "Анализ системы..."
# Шаг 2
sleep 2
qdbus $dbusRef Set ru.rusbitech.flydialog.ProgressDialog value 2
qdbus $dbusRef setLabelText "Проверка целостности..."
# Шаг 3
sleep 2
qdbus $dbusRef Set ru.rusbitech.flydialog.ProgressDialog value 3
qdbus $dbusRef setLabelText "Применение обновлений..."
# Завершение
sleep 1
qdbus $dbusRef ru.rusbitech.flydialog.ProgressDialog.close
Запуск диалога с прогресс-баром
Запустите диалог с прогресс-баром, передав управление скрипту:
fly-dialog --progressbar "Подготовка к обновлению..." 6 | ./fly-dialog-progressbar.sh
Параметр 6 указывает на общее количество шагов. Значение прогресса изменяется от 0 до этого числа. Вместо команд sleep можно выполнять полезные действия, такие как шифрование, копирование файлов или проверка подписей.
Дополнительные возможности
Fly-dialog предоставляет ряд дополнительных возможностей:
--embed <winid>: встраивание диалога в родительское окно.
--withoutbuttons: удаление кнопок из информационных диалогов.
--separate-output: построчный вывод при множественном выборе.
- Поддержка Qt-параметров: настройка стилей, шрифтов и геометрии окна.
Безопасность и соответствие стандартам
Fly-dialog разработана с учётом требований ФСТЭК России и ФСБ. Она не использует сторонние компоненты, которые могут нарушить модель доверия. Утилита работает в рамках доверенной графической подсистемы Astra Linux SE, что делает её единственным рекомендованным инструментом для создания графических интерфейсов в защищённых системах.
Заключение
Fly-dialog — это мощный инструмент, необходимый для создания безопасных и профессиональных графических интерфейсов в Astra Linux SE. Освоив его возможности, вы сможете разрабатывать надёжные скрипты с графическим интерфейсом, соответствующие высоким требованиям к безопасности.