Назад | Перейти на главную страницу

SELinux предотвращает доступ к / var / log из-за Docker

У меня есть контейнер Docker, который должен читать журналы, в том числе с самого хоста. Так я монтирую том /var/log используя z флаг. Это изменяет контекст SELinux для файлов внутри /var/log что не позволяет моему обычному процессору получить доступ к этим файлам, в результате чего я не могу войти в систему локально:

kernel: type = 1400 audit (14958482): avc: denied {open} for pid = 12345 comm = "agetty" name = "/ var / log / wtmp" dev = "dm-6" ino = 134 scontext = system_u: system_r : getty_t: s0-s0: c0.c1023 tcontext = system_u: object_r: svirt_sandbox_file_t: s0 tclass = файл

Какая здесь лучшая практика? Отключение SELinux, хотя и решает проблему, не вариант.

restorecon -R /var/log может исправить проблему отсутствия входа в систему, так как он вернет все метки в этом дереве по умолчанию.

Долгосрочное исправление заключается в изменении политики SELinux, чтобы позволить контейнерам Docker читать содержимое / var / log. https://wiki.gentoo.org/wiki/SELinux/Tutorials/Creating_your_own_policy_module_file это один из примеров того, как это сделать. Если вы положите все обратно и попытаетесь прочитать снова, вы можете использовать audit2allow -r чтобы сформировать для вас необходимую политику.

Если вы используете Chef, вы можете использовать https://supermarket.chef.io/cookbooks/selinux_policy/versions/0.3.0 сделать это тоже.

(И похвалы за то, что не пошли по маршруту just-disable-it)