Ich musste mich abmelden und wieder anmelden oder das System neu starten. Hier haben wir den Hinweis gefunden. Linux-Gruppenberechtigungen werden nicht korrekt erzwungen.
CentOS7, SELinux, Apache, PHP-FPM: Zugriff für file_put_contents auf ein Benutzerverzeichnis verweigert
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/USER
Verzeichnis und alles darunter befindet sich im Besitz von USER. Alle Dateien und Verzeichnisse haben einen SELinux-Kontext mit httpd_user_content_t
Ausnahme 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/USER
hat 0775 Berechtigungen (Gruppe beschreibbar). Eines meiner Skripte verwendet PHP file_put_contents
, um eine Datei mit dem Namen test_fpc.txt
im /home/USER/public_html/resources/css
Verzeichnis zu erstellen. Dies ist jedoch nur möglich, wenn das Verzeichnis im Besitz von apache:apache
ist file_put_contents
. Wenn das Verzeichnis von im Besitz USER:USER
der file_put_contents
nicht mit failed to open stream: Permission denied
Warnung. 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 bash
und 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/css
Verzeichnisses auf zu setzen, httpd_sys_rw_content_t
aber es macht keinen Unterschied.
Ich habe das Einstellen nicht versucht, setsebool -P httpd_unified 1
da 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 Antwort auf die Frage
Verwandte Probleme
-
4
Gutes freies Ubuntu Server-VMWare-Image benötigt
-
3
Meine Datei ist in Excel 2007 gesperrt. Was ist los?
-
1
Apache Reverse Proxy
-
1
Wie stelle ich TrustedInstaller als Besitzer des Programmverzeichnisses wieder her?
-
3
Ubuntu Server mit GNOME Desktop Envinronment - Einstellen der Apatche-Konfigurationsdateiberechtigun...
-
8
Wie kann ich allen Benutzern in Linux Schreibzugriff auf einen Ordner gewähren?
-
5
Gibt es einen * guten * HTML-Modus für Emacs?
-
1
Apache2-Fehlerprotokoll
-
4
Überprüfen, welche PHP-Version ich unter Linux laufe?
-
2
Mac OS X-Bash: Deinstallieren Sie alle Apache- und PHP-Vorfälle