Гайд: Права на выключение времени для доменных пользователей в Astra Linux: Polkit и sudoers

Предоставление доменным пользователям прав на выключение времени Astra Linux через Polkit и sudoers. Инструкция для SE и Common Edition

2026.05.09                  


Гайд: Права на выключение времени для доменных пользователей в Astra Linux: Polkit и sudoersГайд: Права на выключение времени для доменных пользователей в Astra Linux: Polkit и sudoers В Astra Linux нет встроенного графического «редактора времени отключения питания» для обычных пользователей. В Linux планирование выключения реализуется через shutdown, systemd-timer, cron или корпоративные системы управления. Для предоставления доменным пользователям права на выключение/перезагрузку (в том числе по расписанию) необходимо настроить механизм контроля доступа.

Ниже приведён подробный, проверенный на Astra Linux SE/Common Edition 1.7–1.8 гайд по безопасному предоставлению таких прав.


1. Уточнение: что именно нужно разрешить?

В Astra Linux управление питанием делегировано systemd-logind. За действия отвечают PolicyKit (Polkit):

  • org.freedesktop.login1.power-off – выключение
  • org.freedesktop.login1.power-off-multiple-sessions – выключение при активных сеансах других пользователей
  • org.freedesktop.login1.reboot – перезагрузка

Если в вашей организации используется специфичная утилита Astra (например, fly-admin), её Polkit-действия можно посмотреть командой:

pkaction | grep -iE "shutdown|power|reboot|fly"

В гайде ниже используется стандартный набор действий freedesktop.login1, который покрывает 95% сценариев.


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

  1. Убедитесь, что хост присоединён к домену (SSSD/Winbind) и доменные пользователи входят в систему.
  2. Проверьте доступ к root или учётной записи с правами sudo.
3. Убедитесь, что установлен и активен polkit:
systemctl is-active polkit

3. Способ 1: Настройка через Polkit (рекомендуется для GUI и systemd)

Polkit позволяет гибко управлять правами без предоставления полного root.

3.1. Создайте локальную группу для доменных пользователей

sudo groupadd -r domain-shutdown-users

Добавьте нужных доменных пользователей (или целую AD-группу, если SSSD настроен на маппинг):

sudo usermod -aG domain-shutdown-users DOMAIN\ivanov
# или
sudo groupmems -a domainuser1 -g domain-shutdown-users

Проверьте вхождение:

id DOMAIN\ivanov | grep domain-shutdown-users

3.2. Создайте правило Polkit

sudo nano /etc/polkit-1/rules.d/10-domain-shutdown.rules

Вставьте содержимое:

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.login1.power-off" ||
        action.id == "org.freedesktop.login1.power-off-multiple-sessions" ||
        action.id == "org.freedesktop.login1.reboot") {
        if (subject.isInGroup("domain-shutdown-users")) {
            return polkit.Result.YES;
        }
    }
});

Важно:

В Astra Linux SE с включённым MAC (Parsec/astra-mac) Polkit может не применяться к privileged-действиям. Если правило не срабатывает, потребуется настройка доверенных программ в MAC или переход к Способу 2.

Перезапустите Polkit:

sudo systemctl restart polkit

4. Способ 2: Настройка через sudoers (для CLI и скриптов)

Если доменным пользователям нужно планировать выключение из терминала или cron, настройте sudo без пароля для конкретных команд.

sudo visudo -f /etc/sudoers.d/domain-shutdown

Вставьте:

%domain-shutdown-users ALL=(root) NOPASSWD: /sbin/shutdown, /sbin/poweroff, /sbin/reboot, /usr/bin/systemctl poweroff, /usr/bin/systemctl reboot

Проверьте синтаксис:

sudo visudo -c

Предупреждение:

Никогда не редактируйте /etc/sudoers напрямую через обычный текстовый редактор.


5. Как реализовать «редактор времени отключения»

Поскольку нативного GUI-планировщика выключения в Linux нет, используйте один из вариантов:

Вариант A: at (одноразовое задание)

echo "sudo /sbin/shutdown -h now" | at 23:00

Требует, чтобы пользователь был в группе domain-shutdown-users и имел права на sudo shutdown (Способ 2).

Вариант B: systemd-timer (рекомендуется)

Создайте юнит от имени root, но разрешите запуск через Polkit или sudo.

# /etc/systemd/system/scheduled-poweroff.service
[Unit]
Description=Scheduled Power Off

[Service]
Type=oneshot
ExecStart=/sbin/shutdown -h now
# /etc/systemd/system/scheduled-poweroff.timer
[Unit]
Description=Timer for scheduled power off

[Timer]
OnCalendar=*-*-* 23:00:00
Persistent=true

[Install]
WantedBy=timers.target
sudo systemctl enable --now scheduled-poweroff.timer

Доменные пользователи могут управлять таймером через Polkit или sudo systemctl.

Вариант C: GUI-планировщик (Astra-specific)

В некоторых сборках Astra Common Edition присутствует fly-admin-schedule или astra-control. Если он установлен, права на него также регулируются через Polkit.

Проверьте доступные действия:

pkaction | grep fly.admin

И создайте правило аналогично п.3.2.


6. Тестирование

  1. Войдите под доменным пользователем.
2. Проверьте Polkit:
   pkcheck --action-id org.freedesktop.login1.power-off --process $$

Должно вернуть authorized. 3. Попробуйте выключить систему из GUI или через systemctl poweroff.
4. Для CLI: sudo shutdown -h +5

Если действие блокируется, проверьте логи:

journalctl -u polkit --since "5 min ago"
journalctl -t sudo --since "5 min ago"

7. Особенности Astra Linux (SE / Common Edition)

Аспект Примечание
MAC (Parsec / astra-mac) В SE-версии обязательный контроль доступа может переопределять Polkit. Для работы в MAC требуется добавить пользователя/группу в доверенные или настроить метки безопасности. Без этого polkit.Result.YES может игнорироваться.
Сертификация ФСТЭК Изменение polkit или sudoers может нарушить конфигурацию ИС, прошедшую сертификацию. Фиксируйте изменения в журнале ИБ и согласуйте с ответственным за безопасность.
Доменная интеграция SSSD по умолчанию не маппит AD-группы в локальные. Если вы используете AD-группу напрямую, убедитесь, что в /etc/sssd/sssd.conf есть ad_gpo_map_interactive = +domain-shutdown-users или используйте локальную группу как в гайде.
Обновления При обновлении Astra файлы в /etc/polkit-1/rules.d/ и /etc/sudoers.d/ сохраняются, но после мажорных апгрейдов проверяйте совместимость синтаксиса.

Важные рекомендации

  1. Не давайте NOPASSWD: ALL – только конкретные команды.
  2. Ведите учёт изменений – в сертифицированных ИС любые правки sudoers/polkit должны проходить процедуру согласования.
  3. Для централизованного управления используйте Ansible, SCCM, Zabbix или GPO-скрипты, если доменная инфраструктура поддерживает Linux.
  4. Если нужен именно GUI-планировщик – рассмотрите развёртывание kshutdown, gnome-schedule или корпоративный RMM, адаптированный под Astra.