SELinux Einflüsse "failed to open stream: Permission denied" - PHP-Fehler
Gestern habe ich 5 Stunden am Stück die Entdeckung einer scheinbar unzumutbaren Fehler "failed to open stream. permission denied", die auftreten, nachdem alle Vorgänge des Schreibens in die Datei system: fopen (mit "w" und "a" - flags), move_uploaded_file, file_put_contents.
Habe ich erneut geprüft, viele Male Verzeichnisse Besitzer (Benutzer-und Gruppen - chown, chgrp), haben ändern Sie Ordner-Attribute, um unsichere 777 (rwx mit chmod
), aber es hat keine Wirkung. Ich habe sogar neu installiert, Apache und PHP, aber immer noch mit den gleichen Fehler.
Als es erschien nach Stunden des Lesens verschiedene Dokumentation der Herkunft der Fehler war SELinux-Beschränkungen automatisch angewendet, für den Apache-Dienst httpd. Ich habe einfach deaktiviert SELinux durch Bearbeiten /etc/selinux/config
Datei auf meinem Fedora (release 20) über die Linie zu ändern:
SELINUX=enforcing
zu
SELINUX=disabled
Ich meinen computer neu gestartet und lästige Fehler endlich verschwunden.
Habe ich zu bemerken, dass alle Fragen, die bei Stack Overflow über das Thema "permission denied" auf die LAMP-Umgebung berühren, nur die Ordner die Berechtigung betrifft, das war nicht der Fall in meinem Fall.
-
(praktische) Wie kann ich gewähren, Apache httpd service schreiben, löschen, aktualisieren Berechtigungen auf Verzeichnis ohne völlig deaktivieren von SELinux?
-
(theoretische) Was ist SELinux? Was ist es gedacht? Warum (aus welchem Grund) es erstellt wurde? Warum sollte ich es verwenden? Gibt es einen Grund zu halten, aktiviertem SElinux auf lokalen dev-Maschine?
ausschließlich für die Moderatoren der Ressource: ich weiß, dass dieses Thema deckt mehr die Verwaltung als die eigentliche Programmierung, aber ich bin sicher es wirkt sich auf Entwickler, die in viel schwereren Weg als, sagen wir unerfahrenen Administratoren, so dass die Wahl zwischen SuperUser und StackOverflow-ich nahm letztere. Allerdings ist es an Ihnen, ob Sie die Frage an die SuperUser-oder halten Sie an dieser Stelle.
- Das klingt für mich wie eine Frage, die ist besser geeignet für die serverfault.com
- Es ist schon eine Weile her, seit ich versuchte ein SELinux-system - für die lokale dev fand ich es übermäßig gesperrt. Ich würde schalten Sie es lokal, aber ich erwarte, dass es ist nützlich in der Produktion.
- Ich denke für den administrator es ist eine sehr häufige-und wahrscheinlich weit bekanntes Problem (wie "warum sollte ich verwenden inhertiance" für Programmierer), aber für die Programmierer, die es werden könnten, sehr hilfreich - wenn ich finden würde, einige ähnliche Themen in Suchmaschinen-Indizes gestern ich würde sparen etwa 5 Stunden Zeit. Aber ich bin verlassen, es ist bis zu den Moderatoren, wo Sie diese Frage stellen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin kein Experte, aber habe ein paar Probleme mit SELinux mich. Ich lese ein paar Artikel und aus dem, was ich sammeln können, SELinux ist eine andere Ebene der Sicherheit für Ihre server und sollte wirklich bleiben, anstatt ausgeschaltet, aufgrund von Unwissenheit (das war das Zitat, das ich gelesen habe, nicht meine Worte). Ich fand diese Seite hilfreich und auch komisch und es wird wahrscheinlich geben Ihnen mehr Informationen als ich es je könnte.
http://stopdisablingselinux.com/
Ein paar Dinge, die ich habe festgestellt, dass ich die Aktie:
Können Sie die aktuelle SELinux-Berechtigungen mit dem folgenden Befehl:
Sie können SELinux-Berechtigungen mit dem folgenden Befehl:
Können Sie einen Platzhalter ändern, alle Dateien in einem Verzeichnis, etwa so:
Sie können die Berechtigungen für alle Dateien und Verzeichnisse rekursiv mit (dies ist der Befehl, der wahrscheinlich beheben Ihre Erlaubnis, Sie sollten es vermeiden, 777, wie dann die Seuche):
Wenn Sie möchten, verwenden Sie die home-Verzeichnisse zu dienen, Websites oder Anwendungen, die Sie benötigen, um diesen Befehl ausgeben:
Hatte ich Probleme mit fsockopen auf centos mit Selinux und ich hatte die Verwendung der folgenden (- P macht diese änderung dauerhaft wird, wirst du dich müssen diesen Befehl auch):
Können Sie sehen, welche flags gesetzt sind, auf HTTPD mit:
Ich denke, dass die Letzte Sache ist, dass ich hatte ein Problem mit der public/private-key-Authentifizierung auf einem server und benötigt, um diesen Befehl ausführen um es zu beheben (dies ist ein bekannter bug, glaube ich):
Hoffentlich einige dieser snippets und Informationen werden von einigem nutzen für Sie und diese sind nicht einfach das Geschwafel eines verrückten Mannes.
Zusätzlich zu den HumbleRat sehr nützliche Antwort, hier ist, was mein problem gelöst, der Apache - nicht schreiben darf Protokolle in speziellen directry :
Quelle : https://blog.lysender.com/2015/07/centos-7-selinux-php-apache-cannot-writeaccess-file-no-matter-what/