Как проверить отказ selinux внутри док-контейнера

У меня есть докер-контейнер, при отключении selinux он работает хорошо; но когда включен selinux (т. е. демон docker запускается с --selinux-enabled), он не может запуститься.

Таким образом, сбой должен быть вызван отказом selinux, но это не отображается в журнале аудита selinux. когда я использую "ausearch -m XXX | audit2allow ..." для создания политики, она не содержит никакой информации об отказе.

хотите знать, как получить информацию об отказе selinux внутри контейнера, чтобы я мог использовать ее при создании моего файла политики?

ps: я проверил информацию о метке файла, к которому осуществляется доступ, они кажутся правильными, но доступ (ls) запрещен:

# ls -dlZ /usr/bin
dr-xr-xr-x. root root system_u:object_r:container_file_t:s0:c380,c857 /usr/bin
# ls /usr/bin
ls: cannot open directory /usr/bin: Permission denied

больше: выбранный ответ ответил на вопрос, но теперь проблема в том, что журнал аудита показывает доступ для чтения «unlabeled_t», но, как показывает «ls -dZ /usr/bin», это «container_file_t». Я поставил это в отдельный вопрос: Почему SELinux отказывает в доступе к внутренним файлам контейнера и называет их unlabled_t?


person Michael.Sun    schedule 14.09.2018    source источник


Ответы (1)


Политика, вероятно, содержит правила dontaudit. Правила Dontaudit не разрешают доступ, но запрещают ведение журнала для определенного доступа.

Вы можете отключить правила dontaudit с помощью semanage:

semanage dontaudit off

После решения проблемы вы, вероятно, захотите снова включить правила dontaudit, чтобы уменьшить шум в журнале.

Также можно искать возможные правила dontaudit с помощью sesearch:

sesearch --dontaudit -t container_file_t
person sebasth    schedule 18.09.2018