Os comentários de @ dawud estão incorretos. As permissões do DAC são verificadas primeiro . Se eles negarem acesso, o processo receberá permissão negada. Se o DAC permitir acesso, a política do selinux MAC será verificada. Se o DAC permitir o acesso, mas o MAC negar o acesso, o acesso será negado. O DAC nunca pode substituir o MAC. Diagrama
Seu plugin Wordpress deve ser rotulado com httpd_sys_script_exec_t
e, portanto, ser executado como httpd_sys_script_t
. Usei apol
, a ferramenta de análise de políticas, para examinar a política em uma VM do CentOS. Acontece que, quando os% booleans httpd_enable_cgi
e httpd_unified
estão habilitados, as regras de permissão são ativadas para que os processos com o rótulo httpd_sys_script_t
tenham acesso total aos objetos marcados com httpd_sys_content_t
.
Abaixo estão as regras ofensivas que são ativadas (indicadas pelos comentários [Enabled]). Observe que httpdcontent
é um atributo do SELinux atribuído na política para todos os httpd_sys*content_t
labels, portanto, essas regras se aplicam a todos eles.
allow httpd_sys_script_t httpdcontent : dir { ioctl read write create getattr setattr lock unlink link rename add_name remove_name reparent search rmdir open } ; [Enabled]
allow httpd_sys_script_t httpdcontent : file { ioctl read write create getattr setattr lock append unlink link rename entrypoint open } ; [Enabled]
allow httpd_sys_script_t httpdcontent : lnk_file { ioctl read write create getattr setattr lock append unlink link rename } ; [Enabled]
Também estão ativadas as regras de transição de tipo que fazem com que novos objetos criados por um processo httpd_sys_script_t
em um diretório httpd_sys_content_t
-labeled sejam rotulados com httpd_sys_rw_content_t
.
type_transition httpd_sys_script_t httpd_sys_content_t : dir httpd_sys_rw_content_t; [Enabled]
type_transition httpd_sys_script_t httpd_sys_content_t : file httpd_sys_rw_content_t; [Enabled]
type_transition httpd_sys_script_t httpd_sys_content_t : lnk_file httpd_sys_rw_content_t; [Enabled]
Eu verifiquei o Red Hat Apache SELinux docs e descobriu isso:
httpd_unified
When enabled, this Boolean allows httpd_t complete access to all of the httpd types (that is to execute, read, or write sys_content_t). When disabled, there is separation in place between web content that is read-only, writeable or executable. Disabling this Boolean ensures an extra level of security but adds the administrative overhead of having to individually label scripts and other web content based on the file access that each should have.
Experimente desligar o link e veja se as coisas se comportam da maneira esperada.