Am avut parte de lupte cu SELinux, dar aceasta este prima dată când mă uimește total. Am două servere CentOS 8 de producție cu configurații identice funcțional care găzduiesc o aplicație web. Am un modul de aplicare a tipului personalizat, ale cărui părți relevante pentru această întrebare sunt următoarele:
modul my_app 1.0;
tastați my_app_rw_content_t;
tipul_fișiere(aplicația_mea_rw_conținut_t);
cere {
tastați httpd_t;
class file { getattr read write execute execute_no_trans open create unlink ioctl link rename };
class dir { add_name remove_name read write create };
clasa lnk_file { getattr read open };
}
permit httpd_t my_app_rw_content_t:file { getattr open read write create unlink ioctl };
permit httpd_t my_app_rw_content_t:dir { add_name remove_name read write };
Vreau să atribui my_app_rw_content_t
context în directorul pentru care aplicația mea îl folosește pentru încărcările temporare de fișiere, care este /data/www/my_app_tmp/. Următoarele personalizări ale politicii sunt active pe ambele sisteme:
fcontext -a -f a -t httpd_sys_content_t -r 's0' '/data/www(/.*)?'
fcontext -a -f a -t my_app_rw_content_t -r 's0' '/data/www/my_app_tmp(/.*)?'
Pe serverul 1, se comportă așa cum era de așteptat:
[me@server1 ~]$ matchpathcon /data/www/my_app_tmp
/data/www/my_app_tmp system_u:object_r:my_app_rw_content_t:s0
Pe serverul 2, nu:
[me@server2 ~]$ matchpathcon /data/www/my_app_tmp
/data/www/my_app_tmp system_u:object_r:httpd_sys_content_t:s0
Nu pot pentru viața mea să-mi dau seama de ce. Este un punct de discutat, deoarece voi migra la sisteme noi în curând pe o altă distribuție, dar tot aș dori să știu ce se întâmplă aici.