Safe mode restriction in effect
Stephan
- php
Hallo,
ich hab einen Root-Server auf dem ich ein php script laufen habe das andere Files erstellen soll (Bilder und HTML-Seiten). Jetzt probier ich da schon zwei Tage rum und bekomms nicht zum laufen weil ich immer wieder die Meldung bekomme:
Warning: mkdir(): SAFE MODE Restriction in effect. The script whose uid/gid is 636/101 is not allowed to access /home/www/web1/html/scpportal/usr_web3_1/default/html/223 owned by uid/gid 30/8 in /home/www/web1/html/scpportal/usr_web3_1/default/shop.php on line 16
oder:
Warning: fopen(): SAFE MODE Restriction in effect. The script whose uid/gid is 636/101 is not allowed to access /home/www/web1/html/scpportal/usr_web3_1/default/html/223 owned by uid/gid 30/8 in /home/www/web1/html/scpportal/usr_web3_1/default/shop_functions.php on line 36
Hier ist das Verzeichnis: (das html verz. hat diese rechte rekursiv)
total 44
drwxr-xr-x 3 web1 ftponly 4096 Nov 22 11:54 ./
drwxr-xr-x 4 web1 ftponly 4096 Nov 15 12:34 ../
drwxrwxrwx 6 web1 ftponly 4096 Nov 22 11:57 html/
-rwxr-xr-x 1 web1 ftponly 5951 Nov 22 11:49 shop.php*
-rwxr-xr-x 1 web1 ftponly 363 Nov 15 18:04 shop_dbfunctions.php*
-rwxr-xr-x 1 web1 ftponly 2934 Nov 22 11:45 shop_functions.php*
-rwxr-xr-x 1 web1 ftponly 5914 Nov 17 21:22 shop_htmlfunctions.php*
-rwxr-xr-x 1 web1 ftponly 2734 Nov 22 11:48 shop_imagefunctions.php*
-rwxr-xr-x 1 web1 ftponly 151 Nov 17 19:59 shop_test.php*
Der apache läuft als www:wwwrun
Die php.ini:
; Safe Mode
;
safe_mode = Off
; By default, Safe Mode does a UID compare check when
; opening files. If you want to relax this to a GID compare,
; then turn on safe_mode_gid.
safe_mode_gid = Off
; When safe_mode is on, UID/GID checks are bypassed when
; including files from this directory and its subdirectories.
; (directory must also be in include_path or full path must
; be used when including)
safe_mode_include_dir = /home/www/web1/files/php_includes
Also ist safe mode ausgeschaltet! Aber warum ärgert der mich dann immer? Kann man dem nicht irgendwie sagen, das mich das nicht interessiert und er einfach alles erstellen soll? Auf dem Server läuft ausser mir eigentlich keiner rum, also müsste ich mich höchstens vor mir selber schützen...
Danke! - Stephan
Hello,
hast Du den Apachen danach auch neu gestartet?
Sonst schen doch einfach dem Apachen das Verzeichnis
chown wwwrun verzeichnis -R
und gut ist's. Trägst dann eben für Dich als User die passenden Gruppenrechte ein, damit Du auch noch dran kommst.
Grüße
Tom
Hello,
hast Du den Apachen danach auch neu gestartet?
Hab ich! ;-)
Sonst schen doch einfach dem Apachen das Verzeichnis
chown wwwrun verzeichnis -R
und gut ist's. Trägst dann eben für Dich als User die passenden Gruppenrechte ein, damit Du auch noch dran kommst.
Hab ich auch schon versucht! Aber dann kommt wiede SAFE MODE Restriction und zwar wenn ich dann versuche die DB-Verbindung zu includen. Dann lässt er mich die nicht einbinden weil die nem anderen gehört!
Any ideas?
Hello,
[linl:http://forum.de.selfhtml.org/?t=64325&m=365802] ist doch auch Dein Thread, oder? Und es geht immer noch um den SafeMode. Habe ich leider erst eben gesehen, sonst hätte ich Dir hier nicht geantwortet.
Aber das noch zu Deiner Info, damit Du nicht noch einen dritten Thread aufmachst zu dem Thema:
SafeMode kann auch auf Verzeichnisebene in der httpd.conf eingestellt werden. Du müsstest also mal ein Testscript schreiben, was das ini_set abfragt. Und dann schau in der httpd.conf nach, ob er dort für das Verzeichnis oder die Doc-Root nochmal einzeln eingeschaltet ist. Die ini-Einstellung wird davon überschrieben.
Grüße
Tom
Okay danke für den Tipp! Ich versuch das mal...
Ich hab diesen Thread eigentlich nur aufgemacht weil ich nicht erwartet habe dass auf den anderen Thread noch jemand antwortet... Sorry!
Moin!
Die php.ini:
; Safe Mode
;
safe_mode = Off
Wenn diese Einstellung nicht wirksam wird, dann lass dir phpinfo() ausgeben und schau nach, welche php.ini wirksam wird (steht IIRC im ersten Block). Kann ja sein, dass die Datei einfach an der falschen Stelle sitzt.
- Sven Rautenberg
Moin!
Hab ich eben gemacht. Es wird aber definitiv die richtige php.ini benutzt. Auch in der httpd.conf steht nix über den save_mode...
Viele Grüße Stephan
Hello,
Hab ich eben gemacht. Es wird aber definitiv die richtige php.ini benutzt. Auch in der httpd.conf steht nix über den save_mode...
Benutzt Du virtual Host Configuration? Das ist Section 3 in der httpd.conf. Da gehört das dann normalerweise hin, wenn man safe_mode einzeln einstellen will und nicht PHP-global. Die Virtual Host Configuration kann auch ausgelagert sein. Muss Du eben mal ein bisschen suchen.
Hast Du denn nun mal innerhalb eines Scriptes mit ini_get() nachgefragt nach der Einstellung vom Safe-Mode? Was ist dabei herausgekommen?
Grüße
Tom
Benutzt Du virtual Host Configuration? Das ist Section 3 in der httpd.conf. Da gehört das dann normalerweise hin, wenn man safe_mode einzeln einstellen will und nicht PHP-global. Die Virtual Host Configuration kann auch ausgelagert sein. Muss Du eben mal ein bisschen suchen.
Ja die Virtual Hosts werden schon benutzt:
<VirtualHost 217.160.216.189:80>
ServerName confixx.p15138841.pureserver.info
# Server nur ueber HTTPS konfigurieren:
# RedirectPermanent / https://confixx.p15138841.pureserver.info/
# /reg/-URLs gehen damit nicht
CustomLog /var/log/httpd/p15138841.pureserver.info_access.log "%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-agent}i""
ErrorLog /var/log/httpd/p15138841.pureserver.info_error.log
#User confixx
#Group users
DocumentRoot /home/www/confixx/html
php_admin_value safe_mode_exec_dir /home/www/confixx/bin
php_admin_value upload_tmp_dir /home/www/confixx/tmp
ScriptAlias /cgi-bin/ /home/www/confixx/html/cgi-bin/
</VirtualHost>
Hast Du denn nun mal innerhalb eines Scriptes mit ini_get() nachgefragt nach der Einstellung vom Safe-Mode? Was ist dabei herausgekommen?
Bei ini_get_all() kommt u.a. das hier raus:
[safe_mode] => Array ( [global_value] => [local_value] => 1 [access] => 4 )
Hello,
php_admin_value safe_mode_exec_dir /home/www/confixx/bin
Das deutet doch schonmal auf eine individuelle Einstellung hin. Ich krieg abe leider aus dem Kof auch nicht mehr zusammen, wie die eingerichtet wird. Musst Du mal Google quälen und dann bitte hier auch die Lösung hinterlassen
Bei ini_get_all() kommt u.a. das hier raus:
[safe_mode] => Array ( [global_value] =>
[local_value] => 1
[access] => 4 )
Hier ist zumindest die Aussage verifiziert, dass in der PHP-ini (global_value) nichts eingestellt ist, in der Virtual-Host-Configuration (local_value) der Safe-Mode aktiv ist und RW (4) erlaubt für den Owner des Directories oder des Files.
Grüße
Tom
Bei ini_get_all() kommt u.a. das hier raus:
[safe_mode] => Array ( [global_value] =>
[local_value] => 1
[access] => 4 )Hier ist zumindest die Aussage verifiziert, dass in der PHP-ini (global_value) nichts eingestellt ist, in der Virtual-Host-Configuration (local_value) der Safe-Mode aktiv ist und RW (4) erlaubt für den Owner des Directories oder des Files.
Hmm, aber es gibt für diesen speziellen user keinen Virual Host eintrag in der httpd.conf. Kann das noch irgendwo anders definiert werden??
Gruß - Stephan
Hello,
Hmm, aber es gibt für diesen speziellen user keinen Virual Host eintrag in der httpd.conf. Kann das noch irgendwo anders definiert werden??
Soweit ich mich erinnere, kann das auch noch in einer .htaccess-Datei festgelegt werden. Die kann ja überall im Verzeichnisbaum stecken.
Ich hatte noch überlegt, ob man sowas auch in einer Root-Shell festlegen könnte. Du müsstest Dir mal im OS die Systemvariablen anzeigen lassen. Tipp doch mal set auf der Konsole und schau da nach.
Grüße
Tom
Hallo Tom,
ich habe es jetzt gefunden! Endlich! ;-)
Ganz versteckt in der httpd.conf:
Include /etc/httpd/confixx_vhost.conf
Und da drin sind die ganzen Domains usw. definiert.
Ich hab jetzt einfach mal folgendes eingetragen, ich hoffe
es ist der richtige syntax:
php_admin_value safe_mode Off
Jetzt muss ich nur noch testen obs funktioniert...
Gruß Stephan
Hello,
Include /etc/httpd/confixx_vhost.conf
Und da drin sind die ganzen Domains usw. definiert.
Ich hab jetzt einfach mal folgendes eingetragen,
php_admin_value safe_mode Off
Hinterlass bitte noch das Endergebnis hier. Ist ja fast schon eine Anleitung gworden, wie man zum Hoster werden kann.
Beruhigt mich aber, dass ich doch noch nicht ganz verblödet bin.
Übrigens kannst Du auch jedem V-Host eine eigene php.ini zuweisen. Dann wird's noch verrückter.
Grüße
Tom
;-)
Hinterlass bitte noch das Endergebnis hier. Ist ja fast schon eine Anleitung gworden, wie man zum Hoster werden kann.
Wie genau in welcher form stellst du dir das vor??
Hello,
Hinterlass bitte noch das Endergebnis hier. Ist ja fast schon eine Anleitung gworden, wie man zum Hoster werden kann.
Wie genau in welcher form stellst du dir das vor??
Na, indem Du einfach schreibst, ob es nun so klappt oder nicht.
ich glaube, Du musst php_admin_flag nehmen und nicht php_admin_value
Grüße
Tom
ich glaube, Du musst php_admin_flag nehmen und nicht php_admin_value
Kann schon sein, aber es funktioniert wohl so auch:
[safe_mode] => Array ( [global_value] =>
[local_value] => Off
[access] => 4 )
Zumindest zeigt er es so an.
Leider kann er immer noch kein Verzeichnis erstellen (permission denied, kein Safe mode ...) in einem Verzeichnis dass ihm nicht gehört, geschweige denn dort dann files erzeugen. Ich bin jetzt den Weg gegangen dass ich die Files dem wwwrun übertragen habe und die Gruppe als die des Users gelassen habe. So kann er auch die Verzeichnisse und Dateien erstellen.
Trotzdem vielen Dank für eure Hilfe!
Viele Grüße Stephan
Hello Stephan,
ich habe noch 'was gefunden:
Warum willst Du den Safemode überhaupt abstellen? Wenn Du die entprechenden Directories und Files an den wwwrun überträgst, müsste doch alles laufen. Auf Produktivservern ist der Safe-Mode ja eine zusätzliche Sicherheit für Dich. Auf Entwicklungssystemen nervt er allerdings.
Grüße
Tom
Moin!
Moin!
Hab ich eben gemacht. Es wird aber definitiv die richtige php.ini benutzt. Auch in der httpd.conf steht nix über den save_mode...
Das behauptest du.
Was steht unter "Configuration File (php.ini) Path" im ersten Block von phpinfo(). Die dort aufgeführte Datei wirkt. Alle anderen wirken nicht.
Außerdem wird im Block "PHP Core" u.a. der Zustand von "safe_mode" nebst anderen Werten aufgeführt. Wenn dort "on" steht, ist der Safe-Mode eingeschaltet.
- Sven Rautenberg