Прохожу курс “от 0 до Linux админа” здесь и столкнулся с проблемой: SELinux мешает tcpdump сохранять захваты в директорию с меткой var_log_t.
Моя цель - сохранить захваты tcpdump в /var/log/tcpdumpd
, когда SELinux находится в режиме принуждения. Директория /var/log/tcpdumpd
имеет тип контекста var_log_t
, но SELinux блокирует сохранение туда через systemd-сервис. Я использую systemd-сервис для автоматизации выполнения tcpdump при загрузке системы. При попытке запустить сервис в режиме принуждения через systemctl start my-tcpdumpd.service
, сервис не запускается и выдает ошибку: Couldn't change ownership of savefile
. Сервис работает только при переводе SELinux в режим permissive.
Убедился, что директория /var/log/tcpdumpd/
принадлежит root и имеет права доступа 755, но это не помогает. Не могу изменить тип контекста для /var/log/tcpdumpd/
через semanage fcontext
, так как там уже установлен контекст var_log_t
(ls -lZ /var/log/
).
Пробовал создать пользовательскую политику SELinux, используя ausearch -m AVC -c tcpdump --raw | audit2allow -M my_tcpdump_policy
, который сгенерировал файлы my_tcpdump_policy.pp
и my_tcpdump_policy.te
. Хотелось бы понять, как должен выглядеть файл TE для создания работающей политики SELinux и получения метки pcap_data_t
, которую можно будет присвоить директории /var/log/tcpdumpd/
. Вот текущий вид моего скрипта:
module my_tcpdump_policy 1.0;
require { type netutils_t: class capability dac_override; }
============= netutils_t ==============
allow netutils_t self:capability dac_override;
Буду признателен за любую помощь!