Подробный адаптированный под Astra Linux гайд установки .deb - пакетов требует прав root

Гайд по установке конкретного deb-пакета в Astra Linux с ограниченными правами sudo. Безопасно, без полного root, с учётом MAC.

2026.04.08                  


Подробный адаптированный под Astra Linux гайд установки .deb - пакетов требует прав rootПодробный адаптированный под Astra Linux гайд установки .deb - пакетов требует прав root Ниже приведён подробный гайд без использования иконок. Установка .deb-пакетов требует прав root, но мы настроим минимально необходимые привилегии только для одного конкретного пакета, без выдачи полного sudo.

Содержание

  1. Подготовка и требования
  2. Способ 1: Ограниченный sudo + скрипт-обёртка (рекомендуемый)
  3. Способ 2: Polkit (для установки через графический интерфейс)
  4. Особенности Astra Linux (MAC/Parsec, редакция ОС)
  5. Проверка и отладка
  6. Меры безопасности

1. Подготовка и требования

  • ОС: Astra Linux Common Edition или Special Edition (версии 1.7/1.8)
  • Пакет .deb заранее размещён в защищённой директории, например: /opt/packages/myapp_1.0.0_amd64.deb
  • У вас есть доступ к учётной записи с правами sudo или root
  • Убедитесь, что sudo установлен: sudo apt install sudo

Важно:

  • В Astra Linux Special Edition по умолчанию включён MAC (Mandatory Access Control). Если установка блокируется, см. раздел 4.

2. Способ 1: Ограниченный sudo + скрипт-обёртка (рекомендуемый)

Шаг 1. Создаём группу для установки пакета

sudo groupadd pkg-installers

Шаг 2. Размещаем пакет в защищённой директории

sudo mkdir -p /opt/packages
sudo cp /путь/к/исходному/myapp_1.0.0_amd64.deb /opt/packages/
sudo chown root:root /opt/packages/myapp_1.0.0_amd64.deb
sudo chmod 644 /opt/packages/myapp_1.0.0_amd64.deb

Шаг 3. Создаём скрипт-обёртку

sudo nano /usr/local/bin/install-myapp.sh

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

#!/bin/bash
set -euo pipefail

# Жёстко заданные параметры (меняйте под свой пакет)
PKG_NAME="myapp_1.0.0_amd64.deb"
PKG_PATH="/opt/packages/${PKG_NAME}"
INSTALL_CMD="/usr/bin/apt"

# Проверка существования файла
if [[ ! -f "${PKG_PATH}" ]]; then
    echo "Ошибка: файл ${PKG_PATH} не найден."
    exit 1
fi

# Запуск установки
echo "Установка ${PKG_NAME}..."
${INSTALL_CMD} install -y "${PKG_PATH}"

# Автоматическое разрешение зависимостей, если они не установились
if dpkg -l | grep -q "ii.*${PKG_NAME}"; then
    echo "Пакет успешно установлен."
else
    echo "Попытка исправить зависимости..."
    /usr/bin/apt-get install -f -y
    echo "Установка завершена."
fi

Назначаем права:

sudo chown root:root /usr/local/bin/install-myapp.sh
sudo chmod 755 /usr/local/bin/install-myapp.sh

Шаг 4. Настраиваем sudoers (безопасно!)

Никогда не редактируйте /etc/sudoers напрямую.

Используйте:

sudo visudo -f /etc/sudoers.d/pkg-install

Вставляем строку:

%pkg-installers ALL=(root) NOPASSWD: /usr/local/bin/install-myapp.sh

Если хотите, чтобы пользователи вводили пароль, уберите NOPASSWD:.

Сохраните и проверьте синтаксис:

sudo visudo -c

Шаг 5. Добавляем пользователей в группу

sudo usermod -aG pkg-installers username

Пользователю потребуется перезайти в систему или выполнить newgrp pkg-installers.

Шаг 6. Как пользователь запускает установку

sudo /usr/local/bin/install-myapp.sh

Скрипт выполнится от root, но только этот файл и только этот пакет. Любые другие команды sudo будут отклонены.

3. Способ 2: Polkit (для установки через графический интерфейс)

Если пользователям нужен GUI-способ (например, через fly-package или pkexec):

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

sudo nano /usr/share/polkit-1/actions/com.mycompany.install-myapp.policy
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
  <vendor>MyCompany</vendor>
  <vendor_url>https://example.com</vendor_url>
  <action id="com.mycompany.install-myapp">
    <description>Установка пакета myapp</description>
    <message>Для установки пакета требуются права администратора.</message>
    <defaults>
      <allow_any>auth_admin_keep</allow_any>
      <allow_inactive>auth_admin_keep</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/local/bin/install-myapp.sh</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
  </action>
</policyconfig>

2. Пользователь может запустить через:

pkexec /usr/local/bin/install-myapp.sh

Запросит пароль администратора (или пароль пользователя, если настроено auth_self).

4. Особенности Astra Linux

Редакция Примечание
Common Edition Стандартное поведение Debian. MAC отключен. Гайд работает без изменений.
Special Edition / Профессиональный Включён MAC (Parsec). Процессы установки пакетов могут блокироваться политикой.

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

1. Проверьте режим:

   getstatus

2. Временно переведите в permissive для отладки (только на тестовой машине!):

   sudo setstatus -m permissive
  1. Или добавьте метку безопасности на скрипт и пакет (требует fly-admin-secd или chcat). В большинстве корпоративных сценариев достаточно подписи пакета и установки через доверенный репозиторий.

Рекомендация:

  • В Astra SE лучше использовать локальный apt-репозиторий + групповую политику sudo, чем прямую установку .deb.

5. Проверка и отладка

1. Проверка группы:

   id username
   # Должно содержать pkg-installers

2. Проверка sudo:

   sudo -l -U username
   # Должно отображаться разрешение на /usr/local/bin/install-myapp.sh

3. Запуск от пользователя:

   sudo /usr/local/bin/install-myapp.sh

4. Просмотр логов:

   journalctl -u apt-daily.service -f
   grep "install-myapp" /var/log/auth.log

6. Меры безопасности

Рекомендуется:

  • Использовать visudo для правки sudoers
  • Жёстко задавать путь и имя пакета в скрипте
  • Размещать .deb в директории, доступной только root
  • Регулярно обновлять пакет и менять версию в скрипте при обновлении

Не рекомендуется:

  • Разрешать sudo dpkg -i * или sudo apt install .*
  • Давать права на /usr/bin/dpkg или /usr/bin/apt напрямую
  • Хранить .deb в /tmp или домашних директориях
  • Отключать MAC на production-системах без обоснования

Альтернатива: Локальный репозиторий + apt

Если пакетов несколько или они обновляются: 1. Создайте локальный репозиторий (apt-ftparchive или reprepro) 2. Подпишите его ключом 3. Добавьте в /etc/apt/sources.list.d/local.list 4. Разрешите sudo только на apt install myapp Это масштабируется и соответствует требованиям ФСТЭК/Минцифры.