Dosya bağlamlarıyla denemeler yaparken garip bir davranışla karşılaştım ve bana göre bir şeyleri özlüyorum. İşte yaptığım şey:
Bir sürü dizin ve dosya oluşturun
# mkdir -p /virtual/www/cgi-bin
# touch /virtual/www/cgi-bin/script
# touch /virtual/www/webpage
Sıfırdan birkaç kural ayarlayın
# 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(/.*)?'
Dene!
# 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 için daha özel kurallara rağmen, her dosya / dizin httpd_sys_content_t türünü alır. Ancak, cgi-bin dizinini istiyorum ve aşağıda httpd_sys_script_exec_t tipi var. Neyi yanlış yapıyorum?
CentOS 6 ve RedHat 7'de aynı sonuçla test edilmiştir.