SELinux verhindert Dateierzeugung mit PHP-Skript unter Webserver

08/09/2010 - 08:28 von Edzard Egberts | Report spam
Die Konfiguration von SELinux ist mir noch völlig neu, komplett
abschalten will ich aber auch nicht. Ein PHP-Script im
Webserver-Verzeichnis soll ein Lockfile anlegen:

$l=fopen("lockfile","w");

Das verweigert SELinux mit dem Hinweis auf falsch gekennzeichnete Datei
<Unknown>, was einleuchtet, da die Datei ohne SELinux-Attribut erzeugt
wird. Eine Lösung wird auch gleich angegeben, mit "semanage fcontext"
einen Dateityp zuweisen. Über die Manpage man httpd_selinux habe ich
auch einen Dateityp gefunden

semanage fcontext -a -t httpd_sys_content_rw_t 'lockfile'

erhalte aber weiterhin einen "Permission denied".

Meine Frage ist jetzt, ob dieser Befehl nur für bestehende Dateien gilt,
oder ob er die Datei in eine Datenbank eintràgt. Wenn Nein, gibt es eine
derartige Möglichkeit?

Oder bin ich da auf dem falschen Pfad und muss dem Skript andere Rechte
geben? Das habe ich schon auf httpd_user_rw_content_t gesetzt und würde
erwarten, dass es content (also mein lockfile) schreiben/lesen kann.
Geht aber auch nicht.

Zu guter Letzt habe ich das gesamte Verzeichnis auf
httpd_user_rw_content_t gesetzt, in der Hoffnung, dass dieses
Verzeichnis für Dateioperationen freigegeben ist - "Permission denied".

An diesem Punkt wird es für mich langsam weniger intuitiv, was muss ich
einfach wissen?
 

Lesen sie die antworten

#1 Ralph Angenendt
08/09/2010 - 09:49 | Warnen spam
Well, Edzard Egberts wrote:
Die Konfiguration von SELinux ist mir noch völlig neu, komplett
abschalten will ich aber auch nicht. Ein PHP-Script im
Webserver-Verzeichnis soll ein Lockfile anlegen:

$l=fopen("lockfile","w");



Und wo liegt "lockfile"? In einem Bereich, in dem der Webserver auch
schreiben darf?

Das verweigert SELinux mit dem Hinweis auf falsch gekennzeichnete Datei
<Unknown>, was einleuchtet, da die Datei ohne SELinux-Attribut erzeugt
wird.



Das nàmlich sollte in Verzeichnissen, die den von dir genannten Context
haben, nicht passieren.

Eine Lösung wird auch gleich angegeben, mit "semanage fcontext"
einen Dateityp zuweisen. Über die Manpage man httpd_selinux habe ich
auch einen Dateityp gefunden

semanage fcontext -a -t httpd_sys_content_rw_t 'lockfile'

erhalte aber weiterhin einen "Permission denied".



Wahrscheinlich darf der Webserver nicht in dem Verzeichnis schreiben.

Oder bin ich da auf dem falschen Pfad und muss dem Skript andere Rechte
geben? Das habe ich schon auf httpd_user_rw_content_t gesetzt und würde
erwarten, dass es content (also mein lockfile) schreiben/lesen kann.
Geht aber auch nicht.



Das sollte eher im Apache-Context laufen (welcher das ist, làsst sich
mit ps auxz recht einfach überprüfen). Oder wie wird das Skript
aufgerufen?

An diesem Punkt wird es für mich langsam weniger intuitiv, was muss ich
einfach wissen?



Keine Ahnung, welche Distribution du einsetzt, aber

http://docs.fedoraproject.org/en-US...ced_Linux/

ist ein recht guter Anfang (auch wenn Fedora recht weit vorne dabei ist,
das ist nicht alles "rückübertragbar") - und
http://fedoraproject.org/wiki/SELinux ist eher so der grobe
Rundumüberblick.
You'll have to wait til yesterday is here

Nicht schreiben können: http://lestighaniker.de/

Ähnliche fragen