Подробный адаптированный под Astra Linux гайд установки .deb - пакетов требует прав root
Ниже приведён подробный гайд без использования иконок. Установка .deb-пакетов требует прав root, но мы настроим минимально необходимые привилегии только для одного конкретного пакета, без выдачи полного sudo.
Содержание
- Подготовка и требования
- Способ 1: Ограниченный
sudo+ скрипт-обёртка (рекомендуемый) - Способ 2: Polkit (для установки через графический интерфейс)
- Особенности Astra Linux (MAC/Parsec, редакция ОС)
- Проверка и отладка
- Меры безопасности
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
- Или добавьте метку безопасности на скрипт и пакет (требует
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
Это масштабируется и соответствует требованиям ФСТЭК/Минцифры.