SELinux: позволяет процессу создавать любой файл в определенном каталоге

У меня есть сценарий, который при вызове приведет к тому, что содержимое dmesg будет записано в файл, причем имя файла в основном является меткой времени. SELinux предотвращает это. Следуя рекомендациям приложения для устранения неполадок SELinux Fedora, я попробовал:

grep dmesg /var/log/audit/audit.log | audit2allow -M mypol

semodule -i mypol.pp

Однако, похоже, это не работает, возможно, потому, что имя создаваемого файла отличается каждый раз. Итак, как я могу сказать SELinux, чтобы позволить dmesg создавать (и записывать) любой файл в определенном каталоге? Или сказать, что этот сценарий (и все процессы, которые он порождает) может сделать это?

  • Каков правильный способ установки контекста SELinux в RPM .spec?
  • Где поставить политику SElinux, чтобы обеспечить прекрасное завершение работы системы?
  • SELinux, MySQL и общая память
  • Selinux на Fedora 25 не позволяет мне подключиться к pptp vpn
  • SELinux: «chcon» не отображается в другой учетной записи пользователя
  • Невозможно изменить или удалить пользователя SELinux
  • Каков наилучший способ узнать SELinux?
  • selinux на squashfs с overlayfs
  • 2 Solutions collect form web for “SELinux: позволяет процессу создавать любой файл в определенном каталоге”

    Вам нужно научиться фильтровать отклонения AVC и как написать настраиваемый политический модуль, чтобы разрешить доступ к определенному действию (в этом случае вы сценарий).

    Я бы начал с удаления модуля, который вы вставили выше, чтобы запустить a-new:

     # semodule -r mymodule.pp 

    Затем запустите свой скрипт:

     # date && ./my_script.sh 

    Вызов date полезен для фильтрации отказов AVC на основе временной метки.

    Затем используйте обычный метод для отладки AVC-отказов, который использует команду ausearch(8) :

     # ausearch -m avc -ts $timestamp | audit2allow 

    Проверьте man-страницу для получения дополнительной информации о переключателях, которые вы можете использовать, в -ts флаг -ts .

    С помощью этой информации вы узнаете, что отрицается на основе существующей политики.

    Теперь вы должны определить, предоставлять ли этот доступ или нет. Предположим, вы хотите предоставить доступ. Вам нужно будет создать настраиваемый политический модуль, описывающий правила, определяющие доступ, который вы хотите предоставить. Это более или менее просто в зависимости от сложности вашего скрипта:

     # ausearch -m avc -ts 10:40:00 | audit2allow -m my_script > my_script.te 

    Это приведет к описанию type enforcement .

    Вы должны приступить к просмотру кода для обеспечения его правильности и компиляции кода type enforcement в module :

     # checkmodule -M -m -o my_script.mod my_script.te 

    Модуль должен быть упакован в policy package чтобы вы могли его загрузить и выгрузить по своему усмотрению:

     # semodule_package -o my_script.pp -m my_script.mod 

    Теперь вы можете загрузить политику, используя:

     # semodule -i my_script.pp 

    Проверьте правильность загрузки:

     # semodule -l | grep my_script 

    Затем попробуйте снова вызвать опровержения и посмотреть, есть ли в журнале аудита больше (разных) предупреждений относительно этого же процесса.

    Дальнейшим выпускам кода type enforcement потребуется version ( 1.0 ) или загрузка пакета не удастся. После компиляции и упаковки, обновление policy package выполняется:

     # semodule -u my_script.pp 

    С SELinux можно многое узнать. Некоторые полезные ссылки:

    • Команды команд.
    • Проверьте также выход apropos selinux .

    Из документов RHEL

    • Управление ограниченными услугами .
    • Улучшенный Linux .

    Хорошая вступительная презентация Дэйва Куигли:

    • Демистификация SELinux

    Вы можете запустить semanage permissive -a dmesg_t . Тогда /bin/dmesg , тип которого dmesg_t , будет работать в разрешающем режиме. Это будет разрешен доступ, но SELinux все равно будет генерировать сообщения AVC.

    Interesting Posts

    Найти последний отредактированный файл (странное поведение exec)

    рекурсивный поиск шаблона, затем для каждого матча распечатывают конкретный номер строки SEQUENCE: номер файла и отсутствие содержимого файла

    Необходимо скопировать файлы в существующий каталог и удалить файлы, которые уже существуют с тем же именем, но с другим расширением

    Как можно отключить корневую оболочку через определенный промежуток времени?

    Управляйте только частью конфигурационного файла с помощью Puppet (многострочная файловая строка)

    Половина моего программного обеспечения ушла; любой способ выздороветь?

    sh -c: Неудачная строка с котировкой строки

    Каков наиболее точный способ измерения скорости чтения / записи диска для хоста OpenVZ VPS из самого хоста?

    Как сказать grep, чтобы соответствовать специальному символу в начале каждого слова

    Как я могу найти чипсет моей платы Arduino?

    Настройка сканера Canon MX360

    где или как посмотреть, переносятся ли данные по USB на массовое хранение

    Завершить запись sox после того, как обнаружено молчание

    Проблема с длиной массива в сценарии bash

    Комбинация uniq и agrep?

    Linux и Unix - лучшая ОС в мире.