Экспериментируя с контекстами файлов, я столкнулся со странным поведением, и мне кажется, что я что-то упустил. Вот что я делаю:
Создайте кучу каталогов и файлов
# 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 с одинаковым результатом.