CentOS7, SELinux, Apache, PHP-FPM: Zugriff für file_put_contents auf ein Benutzerverzeichnis verweigert

1249
user682180

Ich habe ein CentOS7 / Apache-Multi-User-Setup (userdir) mit aktiviertem SELinux und die folgende Verzeichnisstruktur:

/home/USER/public_html/resources/css 

Das gesamte /home/USERVerzeichnis und alles darunter befindet sich im Besitz von USER. Alle Dateien und Verzeichnisse haben einen SELinux-Kontext mit httpd_user_content_tAusnahme des oben genannten Verzeichnisses, auf das ich festgelegt habe httpd_user_rw_content_t. Der Apache-Server läuft unter dem Benutzer-Apache und der Apache-Benutzer ist Mitglied der Gruppe USER. Alles unter /home/USERhat 0775 Berechtigungen (Gruppe beschreibbar). Eines meiner Skripte verwendet PHP file_put_contents, um eine Datei mit dem Namen test_fpc.txtim /home/USER/public_html/resources/cssVerzeichnis zu erstellen. Dies ist jedoch nur möglich, wenn das Verzeichnis im Besitz von apache:apacheist file_put_contents. Wenn das Verzeichnis von im Besitz USER:USERder file_put_contentsnicht mit failed to open stream: Permission deniedWarnung. Das Überwachungsprotokoll lautet:

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 

Wenn ich mich mit dem Apache-Benutzer mit anmelde sudo -u apache bashund ausführe echo "test" > /home/USER/public_html/resources/css/test_bash.txt, funktioniert es und die Überwachungsprotokollausgabe lautet:

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 

Ich habe auch versucht, den Kontext des /home/USER/public_html/resources/cssVerzeichnisses auf zu setzen, httpd_sys_rw_content_taber es macht keinen Unterschied.

Ich habe das Einstellen nicht versucht, setsebool -P httpd_unified 1da ich die aktuelle restriktive SELinux-Konfiguration wirklich gerne beibehalten möchte und ich fühle, dass SELinux hier nicht das eigentliche Problem ist. Was könnte die Ursache dafür sein, dass das von der Gruppe beschreibbare Verzeichnis vom Apache-Benutzer, der Mitglied der Gruppe USER ist, nicht beschreibbar ist?

1

1 Antwort auf die Frage

0
user682180

Ich musste mich abmelden und wieder anmelden oder das System neu starten. Hier haben wir den Hinweis gefunden. Linux-Gruppenberechtigungen werden nicht korrekt erzwungen.