Прохожу курс “от 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;
Буду признателен за любую помощь!