Cent OS + Apache + PHP = ? zu rechten

A

auertob

Grünschnabel
Hallo zusammen,

ich betreibe lokal auf einen vHost einen Cent OS Webserver mit dem Apache und PHP.
Neulich wollte ich ein Script ausführen der einen Ordner anlegt unter "/var/www/html/cache".

Seit einpaar Tagen habe ich das Problem, dass ich es nicht hinbekomme den Script schreiben zulassen.

In dem Logfile steht die Meldung "PHP Warning: mkdir(): Permission denied in /var/www/html/createslr.php on line 69"

Der PHP-User ist "apache(48)" und der Besitzer/Gruppe ist auch "apache(48)/(48)" mit den Rechten 777 (ist ja lokal).

Der PHP Script sieht so aus:
"$cachestr = '../cache/';
mkdir($cachestr, 0777, true)"

Mir scheint als hätte ich noch eine Sache vergessen zu Konfigureren.

Hat jemand einen Tipp?

Danke + Gruß auertob
 
Hast du auf deinem CentOS SELinux aktiviert?
Ich hatte das mal auf Fedora: Da bin ich auch fast wahnsinnig geworden bei der Fehlersuchen, bis mir aufgegangen ist, dass SELinux den Zugriff unterbindet.
Falls dem so ist, kannst du mal kurz nachdem dir der Zugriff verweigert wurde in /var/log/audit/audit.log bzw. /var/log/audit.log gucken, ob SELinux es blockiert hat.

Viele Grüße,
Pik-9
 
Zuletzt bearbeitet:
Hallo Pik-9,

vielen Dank für den Tipp :D
Es lag an SELinux ... ich habe es auf permissive gestellt und es geht.

Gruß auertob
 
Du solltest SELinux nicht einfach auf permissive stellen: https://stopdisablingselinux.com/
SELinux bietet dir einen sehr guten Schutz, auf den du damit verzichtest.
Es ist viel besser, SELinux beizubringen, diese Art von Zugriff in Zukunft zu erlauben.
Versuch mal (mit root-Rechten versteht sich):
Code:
semanage fcontext -a -t httpd_sys_content_t '/var/www/html(/.*)?'
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/createslr.php'

Damit passt du die SELinux Kontexte an, sodass CGI Scripte, wie dein createslr.php in Zukunft auf alle Dateien unterhalb von /var/www/html Zugriff haben.
Falls das nicht funktioniert, musst du mal die genaue Fehlermeldung aus audit.log posten.

Viele Grüße,
Pik-9
 
Zuletzt bearbeitet:
Hallo Pik-9,

du hast natürlich völlig Recht. Hätte der Server Zugriff zum WWW oder wäre aus dem WWW erreichbar, dann würde ich auf jeden Fall einen Regelsatz hinterlegen.

Ich habe nur drauf verzichtet weil die Maschine ab und zu lokal läuft.

Gruß auertob
 

Ähnliche Themen

Habe da ein Problem was nicht wegbekomme

HP PSC 2175 - CUPS druckt nicht

Squid nur zum maskieren der eigenen IP, nicht für Webserver auf port 80

CGI laesst sich nicht ausfuehren

Apache modul mod_rewrite aktivieren

Zurück
Oben