restorecon в CentOS не следует порядку fcontext

restorecon в CentOS не следует порядку fcontext

Экспериментируя с контекстами файлов, я столкнулся со странным поведением, и мне кажется, что я что-то упускаю. Вот что я делаю:

Создайте кучу каталогов и файлов

# mkdir -p /virtual/www/cgi-bin
# touch /virtual/www/cgi-bin/script
# touch /virtual/www/webpage

Установите несколько правил с нуля

# semanage fcontext -D
# semanage fcontext -a -t httpd_sys_script_exec_t '/virtual/www/cgi-bin(/.*)?'
# semanage -a -t httpd_sys_content_t '/virtual/www(/.*)?'

Попробуй это!

# restorecon -vr /virtual
restorecon reset /virtual/www context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /virtual/www/cgi-bin context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /virtual/www/cgi-bin/script context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /virtual/www/webpage context unconfined_u:object_r:default_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

Несмотря на более конкретное правило для cgi-bin, каждый файл/каталог получает тип httpd_sys_content_t. Однако я хочу каталог cgi-bin и ниже получил тип httpd_sys_script_exec_t. Что я делаю не так?

Протестировано в CentOS 6 и RedHat 7 с одинаковым результатом.

решение1

Поскольку шаблоны, используемые selinux, не могут быть отсортированы (например, сравните .*bс b.*), selinux упорядочивает правила не по специфичности, а по принципу «последнее добавление — последнее применение».

К сожалению, semanage fcontext -l упорядочивает правила путем простого сравнения строк, что помогает найти нужное правило, но не помогает, если вам нужно отладить несколько совпадающих правил.

Вы можете увидеть фактически примененный заказ в

cat /etc/selinux/targeted/contexts/files/file_contexts.local

Поэтому вам нужно сначала добавить более общее правило, а затем более конкретное. Или, что еще лучше, постарайтесь построить правила таким образом, чтобы только одно правило на файл могло соответствовать.

Связанный контент