Подробный гайд по программному блокированию экрана в Astra Linux

Программная блокировка экрана в Astra Linux: команды, автоблокировка по простою, настройка через systemd и особенности безопасности для Орёл и Смоленск.

2026.04.17                  


Подробный гайд по программному блокированию экрана в Astra LinuxПодробный гайд по программному блокированию экрана в Astra Linux

Важно: Astra Linux поставляется в двух основных редакциях:

  • Общего назначения («Орёл») – обычно использует KDE, XFCE или GNOME.
  • Специального назначения («Смоленск») – использует собственное окружение Fly и жёсткие механизмы мандатного контроля доступа (Parsec/MLS).

В сертифицированных конфигурациях («Смоленск») рекомендуется использовать только штатные средства, так как замена механизмов блокировки может нарушить требования аттестации.

1. Универсальные методы (рекомендуемые)

Эти способы работают независимо от окружения рабочего стола и соответствуют стандартам Freedesktop.

1.1. Через loginctl (systemd)

# Заблокировать текущую сессию
loginctl lock-session "$XDG_SESSION_ID"

# Заблокировать все графические сессии
loginctl lock-sessions

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

1.2. Через D-Bus (ScreenSaver API)

dbus-send --session \
  --dest=org.freedesktop.ScreenSaver \
  --type=method_call \
  /org/freedesktop/ScreenSaver \
  org.freedesktop.ScreenSaver.Lock

Стандартный интерфейс, поддерживается Fly, KDE, XFCE, GNOME.

Проверить регистрацию интерфейса:

dbus-send --session --dest=org.freedesktop.DBus --type=method_call /org/freedesktop/DBus org.freedesktop.DBus.ListNames | grep -i screen

1.3. Через xdg-screensaver

xdg-screensaver lock

Требуется пакет xdg-utils (обычно установлен). Вызывает зарегистрированный хранитель экрана.

2. Специфичные команды для окружений Astra Linux

Окружение Fly (Astra Linux SE)

# Штатная утилита блокировки
fly-lock

# Или через dpms/sleep
fly-dpms force

В некоторых версиях fly-lock может отсутствовать в PATH. Полное расположение: /usr/bin/fly-lock.

KDE / XFCE / GNOME (Astra Linux CE)

Окружение Команда
KDE Plasma qdbus org.kde.screensaver /ScreenSaver Lock или loginctl lock-session
XFCE xflock4 или light-locker-command -l
GNOME/Cinnamon gnome-screensaver-command -l или cinnamon-screensaver-command -l

3. Автоматическая блокировка по простою

3.1. Подготовка

Установите утилиту отслеживания активности:

sudo apt update && sudo apt install xprintidle

3.2. Bash-скрипт автоблокировки

Создайте ~/.local/bin/auto-lock.sh:

#!/bin/bash
# Блокировка после 5 минут (300000 мс) простоя
IDLE_THRESHOLD=300000

while true; do
  IDLE=$(xprintidle)
  if [ "$IDLE" -ge "$IDLE_THRESHOLD" ]; then
    # Используем универсальный D-Bus вызов
    dbus-send --session \
      --dest=org.freedesktop.ScreenSaver \
      --type=method_call \
      /org/freedesktop/ScreenSaver \
      org.freedesktop.ScreenSaver.Lock &>/dev/null
    exit 0
  fi
  sleep 30
done

Сделайте исполняемым: chmod +x ~/.local/bin/auto-lock.sh

3.3. Запуск через systemd user timer (рекомендуется)

# ~/.config/systemd/user/auto-lock.service
[Unit]
Description=Auto screen locker

[Service]
Type=simple
Environment=DISPLAY=:0
Environment=XAUTHORITY=%h/.Xauthority
ExecStart=%h/.local/bin/auto-lock.sh

[Install]
WantedBy=default.target
# ~/.config/systemd/user/auto-lock.timer
[Unit]
Description=Run auto-lock after graphical session starts

[Timer]
OnUnitActiveSec=3min
Unit=auto-lock.service

[Install]
WantedBy=timers.target

Активация:

systemctl --user daemon-reload
systemctl --user enable --now auto-lock.timer

4. Сторонние локеры (i3lock, slock, vlock)

В редакции «Смоленск» использование сторонних GUI-локеров может требовать настройки политик Parsec. В «Орёл» работают без ограничений.

sudo apt install i3lock

Пример запуска:

i3lock -c 000000 --nofork

Для интеграции с системными событиями можно обернуть в скрипт, вызываемый через loginctl или cron.

5. Особенности безопасности Astra Linux

Аспект Рекомендация
Мандатный контроль (Parsec) Запуск блокировщика должен происходить в контексте сессии пользователя с корректным DISPLAY и XAUTHORITY. В «Смоленск» процессы с высоким уровнем целостности не могут напрямую управлять GUI-сессией низкого уровня.
Cron Не рекомендуется для GUI-действий. Используйте systemd --user или at. Если cron необходим, добавьте: export DISPLAY=:0 XAUTHORITY=/home/$USER/.Xauthority
Аттестация В сертифицированных конфигурациях модификация pam, lightdm, fly-dm или замена fly-lock нарушает контроль целостности. Используйте только loginctl или fly-lock.
Проверка блокировки loginctl show-session "$XDG_SESSION_ID" -p LockedHint → должен вернуть LockedHint=yes

6. Отладка и проверка

Задача Команда
Список сессий loginctl list-sessions
Статус блокировки loginctl show-session <ID> -p LockedHint
Логи D-Bus journalctl --user -u dbus | grep -i screen
Проверка X-сессии echo $DISPLAY $XAUTHORITY
Тест блокировки sleep 5 && loginctl lock-session "$XDG_SESSION_ID"

Если блокировка не срабатывает:

  1. Убедитесь, что скрипт/команда выполняется от имени пользователя, а не root.
  2. Проверьте, что XDG_SESSION_TYPE=wayland или x11 установлен. Для X11: export DISPLAY=:0.
  3. В «Смоленск» проверьте журналы Parsec: dmesg | grep parsec или journalctl -k | grep -i mac.

Итоговые рекомендации

Сценарий Оптимальный метод
Быстрая блокировка из терминала loginctl lock-session "$XDG_SESSION_ID"
Интеграция в скрипт/приложение D-Bus org.freedesktop.ScreenSaver.Lock
Автоблокировка по простою xprintidle + systemd --user таймер
Сертификация «Смоленск» Только fly-lock или loginctl
Кастомный интерфейс блокировки i3lock + обёртка через systemd --user