CentOS7、SELinux、Apache、PHP-FPM:拒绝对用户目录的 file_put_contents 进行访问

CentOS7、SELinux、Apache、PHP-FPM:拒绝对用户目录的 file_put_contents 进行访问

我有一个 CentOS7/Apache 多用户(userdir)设置,启用了 SELinux 且目录结构如下:

/home/USER/public_html/resources/css

整个/home/USER目录和其下的所有内容都归 USER 所有。httpd_user_content_t除了上述目录(我已将其设置为 )之外,所有文件和目录的 SELinux 上下文均为httpd_user_rw_content_t。apache 服务器在用户 apache 下运行,apache 用户是 USER 组的成员。 下的所有内容/home/USER均具有 0775 权限(组可写)。我的一个脚本使用 phpfile_put_contents创建一个名为 的文件test_fpc.txt/home/USER/public_html/resources/css但只有当目录归 拥有时,apache:apache才会file_put_contents成功。如果目录归 拥有,则会失败并显示USER:USER警告。审计日志显示:file_put_contentsfailed to open stream: Permission denied

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

当我使用 apache 用户登录sudo -u apache bash并执行时echo "test" > /home/USER/public_html/resources/css/test_bash.txt,它可以工作并且审计日志输出是:

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

/home/USER/public_html/resources/css我也尝试过设置目录的上下文,httpd_sys_rw_content_t但没有什么区别。

我没有尝试设置,setsebool -P httpd_unified 1因为我真的很想保留当前的限制性 SELinux 配置,而且我觉得 SELinux 不是真正的问题。 是什么原因导致 USER 组成员中的 apache 用户无法写入组可写目录?

答案1

我需要注销并重新登录或重新启动系统。在这里找到了线索Linux 组权限未正确执行。

相关内容