2014-04-14 14 views
8

Ich habe ein wenig zu kämpfen, um das Konzept dervon PHP zu verstehen, da der Kurs, den ich gerade nehme, ein bisschen veraltet ist und betrifft safe_mode. Es besagt, dass, da safe_mode deaktiviert ist, die Einschränkungen zum Ändern von Berechtigungen mit in eine Datei entfernt werden, wenn der Eigentümer nicht derselbe ist wie derjenige, der den Befehl ausführt. Ich arbeite mit PHP 5.5.9 in Verbindung mit XAMPP, ich habe überprüft, dass die Flags ausgeschaltet sind (nur für den Fall), aber es scheint nicht zu funktionieren. Als ich die folgende PHP-Skript ausführen:PHP chmod(): Operation nicht erlaubt, safe_mode Abwertung beteiligt?

echo "File permissions :" . decoct(fileperms("file_permissions.php")); 
chmod("file_permissions.php" ,0777); 

ich die folgende Ausgabe erhalten:

Warning: chmod(): Operation not permitted 

Meine Berechtigungen für die Datei sind die folgenden

[email protected] 1 joelhernandez staff  24 Apr 14 06:59 file_permissions.php 

Und ich habe ps aux | grep httpd ausgeführt Bestätigen Sie, dass der mein Webserver unter dem Benutzer "Daemon" läuft.

Als ich die Datei Eigentum an Daemon ändern:

[email protected] 1 daemon staff  24 Apr 14 06:59 file_permissions.php 

Alles funktioniert, ich verstehe nicht, warum, wie ich hatte verstanden, dass mit safe_mode ausgeschaltet, Dateieigentum nichts bedeuten würde, stattdessen Berechtigungen Datei war der Weg, den Zugang zu handhaben.

Antwort

13

Der Benutzer daemon ist nicht root, daher ist es nicht erlaubt, den Modus einer Datei zu ändern, die einem anderen Benutzer gehört. PHP safe_mode ist hier nicht die Ursache. Die Warnung informiert Sie darüber, dass der versuchte Vorgang fehlgeschlagen ist, da der Webserverbenutzer keine Berechtigung zum Ändern des Modus hatte.

Der Vorgang ist erfolgreich abgeschlossen, nachdem Sie die Eigentümerschaft der Datei manuell in daemon geändert haben, da Benutzer den Modus ihrer eigenen Dateien ändern dürfen.

+0

In Ordnung, also welchen Ansatz sollte ich nehmen? Ist safe_mode nicht deaktiviert, wenn Berechtigungen deaktiviert sind, wenn Benutzer nicht über Berechtigungen verfügen? Ich glaube auch, dass ich gelesen habe, dass chmod() keine Super-User-Berechtigungen benötigt, nur chown() –

+4

'chmod' erfordert nicht immer root - Benutzer können den Modus der Dateien ändern, die sie besitzen -' joelhernandez' kann den Modus ändern Dateien im Besitz von 'Joelhernandez' und' Daemon' können den Modus von Dateien im Besitz von 'Daemon' ändern. Benutzer (außer root) können den Modus von Dateien, die sie nicht besitzen, nicht ändern - 'daemon' kann den Modus von Dateien, die' joelhernandez' gehören, nicht ändern. –

+0

Was Sie stattdessen tun sollten, ist schwer zu sagen, ohne mehr darüber zu wissen, was Sie erreichen wollen. –

Verwandte Themen