Ich verwende einen Server, um mit php-fpm über NGINX in einen Mount-Punkt vom Typ NFS zu schreiben . Im allerersten Schritt zeigt es mir den folgenden Fehler:
2017/01/16 11:32:59 [error] 55463#0: *22 FastCGI sent in stderr: "PHP message: PHP Warning: mkdir(): Permission denied in /var/www/html/x/x.php on line 75
PHP message: PHP Warning: mkdir(): Permission denied in /x/x/x/x/x.php on line 79
PHP message: PHP Warning: mkdir(): Permission denied in /x/x/x/x/x.php on line 83
PHP message: PHP Warning: mkdir(): Permission denied in /x/x/x/x/x.php on line 87
PHP message: PHP Warning: mkdir(): Permission denied in /x/x/x/x/x.php on line 91
PHP message: PHP Warning: mkdir(): Permission denied in /x/x/x/x/x.php on line 95
PHP message: PHP Warning: move_uploaded_file(/mnt/x/x/x/x/x/x.z): failed to open stream: No such file or directory in /var/www/html/x/x.php on line 104
PHP message: PHP Warning: move_uploaded_file(): Unable to move '/tmp/x' to '/mnt/x/x/x/x/x/x.z' in /var/www/html/x/x.php on line 104" while reading response header from upstream, client: IPADDR, server: _, request: "POST /convert/uploadFile HTTP/1.1", upstream: "fastcgi://unix:/run/php-fpm/php-fpm.sock:", host: "IPADDR", referrer: "http://IPADDR/xjob"
Fehler 104 ist völlig in Ordnung, da er nicht mkdir konnte und daher nichts in das Verzeichnis verschieben kann.
Wie auch immer, danach dachte ich selbst, dass es aufgrund von SELinux auftreten könnte , also überprüft, /var/log/message
aber nichts wurde angezeigt. So durcheinander, dass es angemeldet sein kann audit.log
, und so war es auch. Hier sind die Protokolle von /var/log/audit.d/audit.log
:
type=AVC msg=audit(1484554859.698:1415): avc: denied { add_name } for pid=55475 comm="php-fpm" name="on_demand" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:nfs_t:s0 tclass=dir
type=SYSCALL msg=audit(1484554859.698:1415): arch=c000003e syscall=83 success=no exit=-13 a0=7ffe8b951890 a1=1ff a2=8 a3=4 items=0 ppid=55471 pid=55475 auid=4294967295 uid=995 gid=992 euid=995 suid=995 fsuid=995 egid=992 sgid=992 fsgid=992 tty=(none) ses=4294967295 comm="php-fpm" exe="/usr/sbin/php-fpm" subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1484554859.698:1416): avc: denied { add_name } for pid=55475 comm="php-fpm" name="on_demand" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:nfs_t:s0 tclass=dir
type=SYSCALL msg=audit(1484554859.698:1416): arch=c000003e syscall=83 success=no exit=-13 a0=7ffe8b951890 a1=1ff a2=8 a3=30 items=0 ppid=55471 pid=55475 auid=4294967295 uid=995 gid=992 euid=995 suid=995 fsuid=995 egid=992 sgid=992 fsgid=992 tty=(none) ses=4294967295 comm="php-fpm" exe="/usr/sbin/php-fpm" subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1484554859.698:1417): avc: denied { add_name } for pid=55475 comm="php-fpm" name="on_demand" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:nfs_t:s0 tclass=dir
type=SYSCALL msg=audit(1484554859.698:1417): arch=c000003e syscall=83 success=no exit=-13 a0=7ffe8b951890 a1=1ff a2=8 a3=30 items=0 ppid=55471 pid=55475 auid=4294967295 uid=995 gid=992 euid=995 suid=995 fsuid=995 egid=992 sgid=992 fsgid=992 tty=(none) ses=4294967295 comm="php-fpm" exe="/usr/sbin/php-fpm" subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1484554859.698:1418): avc: denied { add_name } for pid=55475 comm="php-fpm" name="on_demand" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:nfs_t:s0 tclass=dir
type=SYSCALL msg=audit(1484554859.698:1418): arch=c000003e syscall=83 success=no exit=-13 a0=7ffe8b951890 a1=1ff a2=8 a3=30 items=0 ppid=55471 pid=55475 auid=4294967295 uid=995 gid=992 euid=995 suid=995 fsuid=995 egid=992 sgid=992 fsgid=992 tty=(none) ses=4294967295 comm="php-fpm" exe="/usr/sbin/php-fpm" subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1484554859.698:1419): avc: denied { add_name } for pid=55475 comm="php-fpm" name="on_demand" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:nfs_t:s0 tclass=dir
type=SYSCALL msg=audit(1484554859.698:1419): arch=c000003e syscall=83 success=no exit=-13 a0=7ffe8b951890 a1=1ff a2=8 a3=30 items=0 ppid=55471 pid=55475 auid=4294967295 uid=995 gid=992 euid=995 suid=995 fsuid=995 egid=992 sgid=992 fsgid=992 tty=(none) ses=4294967295 comm="php-fpm" exe="/usr/sbin/php-fpm" subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1484554859.698:1420): avc: denied { add_name } for pid=55475 comm="php-fpm" name="on_demand" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:nfs_t:s0 tclass=dir
type=SYSCALL msg=audit(1484554859.698:1420): arch=c000003e syscall=83 success=no exit=-13 a0=7ffe8b951890 a1=1ff a2=8 a3=30 items=0 ppid=55471 pid=55475 auid=4294967295 uid=995 gid=992 euid=995 suid=995 fsuid=995 egid=992 sgid=992 fsgid=992 tty=(none) ses=4294967295 comm="php-fpm" exe="/usr/sbin/php-fpm" subj=system_u:system_r:httpd_t:s0 key=(null)
Ich wäre wirklich fröhlich, wenn mich jemand durch dieses Problem führen könnte. Übrigens bin ich nicht bereit, SELinux überhaupt zu deaktivieren, da ich viele Dinge damit gemacht habe.
UPDATE 1
Wie @Dimitar sagte, hier ist die Ausgabe von getsebool -a | grep -i http
:
$ getsebool -a | grep -i http
httpd_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_connect_ftp --> off
httpd_can_connect_ldap --> off
httpd_can_connect_mythtv --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> off
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> off
httpd_dbus_sssd --> off
httpd_dontaudit_search_dirs --> off
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> off
httpd_execmem --> off
httpd_graceful_shutdown --> on
httpd_manage_ipa --> off
httpd_mod_auth_ntlm_winbind --> off
httpd_mod_auth_pam --> off
httpd_read_user_content --> off
httpd_run_ipa --> off
httpd_run_preupgrade --> off
httpd_run_stickshift --> off
httpd_serve_cobbler_files --> off
httpd_setrlimit --> off
httpd_ssi_exec --> off
httpd_sys_script_anon_write --> off
httpd_tmp_exec --> off
httpd_tty_comm --> off
httpd_unified --> off
httpd_use_cifs --> off
httpd_use_fusefs --> off
httpd_use_gpg --> off
httpd_use_nfs --> off
httpd_use_openstack --> off
httpd_use_sasl --> off
httpd_verify_dns --> off
named_tcp_bind_http_port --> off
prosody_bind_http_port --> off
Der Kontext der Dateien entspricht dem unten gezeigten www-Verzeichnis:
drwxr-xr-x. nginx nginx system_u:object_r:httpd_sys_content_t:s0 www
UPDATE 2
Nachdem Sie den Befehl setsebool -P httpd_can_network_connect on
als @Dimitar als Antwort verwendet haben, sieht mein audit.log wie folgt aus:
UPDATE 3
Die Antwort von @FarazX hat mein Problem gelöst, aber als @Dimitar fragte, ist hier das Ergebnis von sealert -a /var/log/audit.d/audit.log > somefile.txt
:
***** Plugin catchall (1.41 confidence) suggests **************************
If you believe that php-fpm should be allowed setattr access on the 1395_10_27_jsAdminLog.txt file by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# ausearch -c 'php-fpm' --raw | audit2allow -M my-phpfpm
# semodule -i my-phpfpm.pp
Additional Information:
Source Context system_u:system_r:httpd_t:s0
Target Context system_u:object_r:httpd_sys_content_t:s0
Target Objects 1395_10_27_jsAdminLog.txt [ file ]
Source php-fpm
Source Path /usr/sbin/php-fpm
Port <Unknown>
Host <Unknown>
Source RPM Packages php-fpm-5.4.16-42.el7.x86_64
Target RPM Packages
Policy RPM selinux-policy-3.13.1-102.el7_3.7.noarch
Selinux Enabled True
Policy Type targeted
Enforcing Mode Enforcing
Host Name SETB0
Platform Linux SETB0 3.10.0-327.el7.x86_64 #1 SMP Thu Nov
19 22:10:57 UTC 2015 x86_64 x86_64
Alert Count 1
First Seen 2017-01-16 12:42:55 IRST
Last Seen 2017-01-16 12:42:55 IRST
Local ID 0076ec8b-214b-4379-b9f3-1523f46d6b36
Raw Audit Messages
type=AVC msg=audit(1484557975.199:1436): avc: denied { setattr } for pid=55476 comm="php-fpm" name="1395_10_27_jsAdminLog.txt" dev="dm-0" ino=963720 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:httpd_sys_content_t:s0 tclass=file
type=SYSCALL msg=audit(1484557975.199:1436): arch=x86_64 syscall=chmod success=yes exit=0 a0=7f36808c6cb8 a1=1ed a2=7f367b331100 a3=7f367b3080f0 items=0 ppid=55471 pid=55476 auid=4294967295 uid=995 gid=992 euid=995 suid=995 fsuid=995 egid=992 sgid=992 fsgid=992 tty=(none) ses=4294967295 comm=php-fpm exe=/usr/sbin/php-fpm subj=system_u:system_r:httpd_t:s0 key=(null)
Hash: php-fpm,httpd_t,httpd_sys_content_t,file,setattr
Vielen Dank an alle.
/var/www/html/
und Unterverzeichnisse?getsebool -a | grep -i http
Antworten:
setsebool -P httpd_can_network_connect
on aktiviert dauerhaft das Flag, das Ihr Problem lösen soll.quelle
audit.log
Datei an, ODER - führen Sie ihn aussealert -a /var/log/audit.d/audit.log > somefile.txt
und geben Sie dann den Inhalt für diese Datei ansealert
wird bereitgestellt vonsetroubleshoot-server
, installieren Sie es also, wenn Sie es nicht auf Ihrem System haben.Ich empfehle Ihnen, die folgenden Pakete über yum herunterzuladen, damit Sie Ihre Probleme leichter finden können:
Weitere Informationen zu SELinux-Paketen finden Sie unter diesem offiziellen Link .
Auf der anderen Seite ist der Wert von httpd_use_nfs auf Ihrem System deaktiviert , und ich denke, das wäre der Grund, warum Sie Fehler erhalten. Bitte aktivieren Sie es mit dem folgenden Befehl, da Sie nfs verwenden. Wenn das Problem dadurch nicht behoben wurde, führen Sie die Schritte von @Dimitar aus und aktualisieren Sie Ihre Frage mit sealert -a /var/log/audit.d/audit.log ::
quelle