CentOS7, SELinux, Apache, PHP-FPM: Acesso negado para file_put_contents para um usuário

1

Eu tenho uma configuração multiusuário (userdir) do CentOS7 / Apache com o SELinux ativado e a seguinte estrutura de diretórios:

/home/USER/public_html/resources/css

O diretório /home/USER inteiro e tudo o que está por baixo é de propriedade de USER. Todos os arquivos e diretórios possuem um contexto SELinux de httpd_user_content_t , exceto o diretório mencionado acima, que eu configurei como httpd_user_rw_content_t . O servidor apache é executado sob o usuário apache e o usuário apache é membro do grupo USER. Tudo sob /home/USER tem 0775 permissões (grupo gravável). Um dos meus scripts usa o file_put_contents do php para criar um arquivo chamado test_fpc.txt no diretório /home/USER/public_html/resources/css , mas somente se o diretório pertencer a apache:apache será o file_put_contents bem-sucedido. Se o diretório pertencer a USER:USER , o file_put_contents falhará com failed to open stream: Permission denied warning. O log de auditoria lê:

type=SYSCALL msg=audit(1483602823.639:155208): arch=c000003e syscall=2 success=no exit=-13 a0=7f0e5d9f1478 a1=241 a2=1b6 a3=73656372756f7365 items=2 ppid=855 pid=992 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="php-fpm" exe="/usr/sbin/php-fpm" subj=system_u:system_r:httpd_t:s0 key="apache_user_access"
type=CWD msg=audit(1483602823.639:155208):  cwd="/home/USER/public_html"
type=PATH msg=audit(1483602823.639:155208): item=0 name="/home/USER/public_html/resources/css/" inode=65290545 dev=08:12 mode=040775 ouid=1002 ogid=1002 rdev=00:00 obj=system_u:object_r:httpd_user_rw_content_t:s0 objtype=PARENT
type=PATH msg=audit(1483602823.639:155208): item=1 name="/home/USER/public_html/resources/css/test_fpc.txt" objtype=CREATE

Quando eu faço login com o usuário do apache com sudo -u apache bash e executo echo "test" > /home/USER/public_html/resources/css/test_bash.txt ele funciona e a saída do log de auditoria é:

type=SYSCALL msg=audit(1483602552.156:155207): arch=c000003e syscall=2 success=yes exit=3 a0=f607c0 a1=241 a2=1b6 a3=0 items=2 ppid=13539 pid=13540 auid=0 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=pts0 ses=207 comm="bash" exe="/usr/bin/bash" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="apache_user_access"
type=CWD msg=audit(1483602552.156:155207):  cwd="/home/USER/public_html"
type=PATH msg=audit(1483602552.156:155207): item=0 name="/home/USER/public_html/resources/css/" inode=65290545 dev=08:12 mode=040775 ouid=1002 ogid=1002 rdev=00:00 obj=system_u:object_r:httpd_user_rw_content_t:s0 objtype=PARENT
type=PATH msg=audit(1483602552.156:155207): item=1 name="test_bash.txt" inode=65273889 dev=08:12 mode=0100644 ouid=48 ogid=48 rdev=00:00 obj=unconfined_u:object_r:httpd_user_rw_content_t:s0 objtype=CREATE

Eu também tentei definir o contexto do diretório /home/USER/public_html/resources/css como httpd_sys_rw_content_t , mas não faz diferença.

Eu não tentei definir setsebool -P httpd_unified 1 como eu realmente gostaria de manter a atual configuração restritiva do SELinux e eu sinto que o SELinux não é o problema real aqui. Qual poderia ser a causa do diretório gravável do grupo não ser gravável pelo usuário do apache que é membro do grupo USER?

    
por user682180 05.01.2017 / 10:30

1 resposta

0

Eu precisava sair e fazer login novamente ou reiniciar o sistema. Encontrei o indício aqui Permissões do Grupo Linux não sendo aplicadas corretamente.

    
por 05.01.2017 / 15:51