AppArmor и запрашиваемые разрешения

Автор guma, 16 марта 2025, 22:55:02

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

guma

Добрый день Пытаюсь разобраться с AppArmor. Для изучения его функционала написал вот такую программку

#include <iostream>

#include <fstream>

#include <string>


int main() {

    // Путь к файлу, который мы хотим создать

    const std::string filePath = "/home/username/Documents/Projects/AppArmorTest/hello.txt";


    // Создаем и открываем файл

    std::ofstream outFile(filePath);


    // Проверяем, удалось ли открыть файл

    if (!outFile) {

        std::cerr << "Ошибка: не удалось открыть файл для записи: " << filePath << std::endl;

        return 1; // Возвращаем код ошибки

    }


    // Записываем строку в файл

    outFile << "Hello world" << std::endl;


    // Закрываем файл

    outFile.close();


    std::cout << "Файл успешно создан: " << filePath << std::endl;

    return 0; // Успешное завершение

}

Создал профиль AppArmor в /etc/apparmor.d с именем create_file и таким содержимым

/home/username/Documents/Projects/AppArmorTest/create_file {

    # Разрешения для программы

    # Например, разрешить чтение и выполнение
    /usr/lib/x86_64-linux-gnu/libstdc++.so.6 r,
    /etc/** r,
    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30 mr,
    # Запретить запись в домашнюю директорию


    # Другие разрешения, если необходимо

}

Как видите профиль содержит странное разрешение "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30 mr," позволяющее модифицировать системную библиотеку. С режимом доступа установленным в "r" программа не запускается, а в "dmesg" содержится следующий лог нарушения

Цитировать[ 4273.647810] audit: type=1400 audit(1742153237.059:54): apparmor="DENIED" operation="file_mmap" profile="/home/username/Documents/Projects/AppArmorTest/create_file" name="/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30" pid=5455 comm="create_file" requested_mask="m" denied_mask="m" fsuid=1000 ouid=0

Почему так происходит? Зачем такой программе такое разрешение? Как тогда вообще настраивать профили apparmor если даже такой примитивной программе приходится разрешать изменять системные библиотеки? В чем смысл тогда?