PHP open_basedir

Status
Für weitere Antworten geschlossen.

EL Duderino

Benutzer
Mitglied seit
02. Okt 2012
Beiträge
62
Punkte für Reaktionen
0
Punkte
0
ich bastle gerade mit einem PHP-Programm, das die open_basedir-Variable nur leer haben möchte. Ich habe das in der DSM-Oberfläche entsprechend eingestellt, und so wie ich es verstehe, ist das eine etwas sicherere Einstellung.

Bevor ich das gemacht habe, hatte ich bei google mehrere Treffer für eine Konfigurationsänderung des Apachen, z.B. hier. Leider hat das nicht funktioniert. Wenn ich aber ein PHP-Code ausführen möchte, der etwas in open_basedir braucht, wäre das ja eine sehr elegante Lösung. Kann man so etwas auf der DS machen?
 

EL Duderino

Benutzer
Mitglied seit
02. Okt 2012
Beiträge
62
Punkte für Reaktionen
0
Punkte
0
PHP safe_mode_exec_dir

Verwandt dazu: Ich habe festgestellt, daß bei dem Programm php (oder ein Link darauf) in einem der Pfade von safe_mode_exec_dir auftauchen muß. Etwas googlen hat mich zum Glauben gebracht, daß das nicht schlimm und mit PHP 5.4 auch nicht mehr nötig ist (z.Z. ist 5.3.x installiert). Habe ich recht?
 

bornheim

Benutzer
Mitglied seit
17. Mrz 2013
Beiträge
8
Punkte für Reaktionen
5
Punkte
53
open_basedir

Ich bin von www.synology-wiki.de/index.php/Installation_von_Tiny_Tiny_RSS hierher gekommen. Dort steht der Hinweis "... ist es theoretisch machbar, open_basedir pro Pfad zu setzen. (Wer mehr weiß, sagt Bescheid)."

Bescheid. :)

In der http.conf des Synology-Apache steht unter anderem:
Code:
Include /usr/syno/etc/sites-enabled-user/*.conf
Das bedeutet, dass aus diesem Verzeichnis alles angezogen wird, dessen Name auf *.conf matcht. Das kann man sich wie folgt zunutze machen:
Code:
	# cd /usr/syno/etc/sites-enabled-user
	# vi tt-rss.conf
		<Directory "/var/services/web/tt-rss">
			php_admin_value open_basedir none
		</Directory>
	# chmod a+r tt-rss.conf
	# /usr/syno/etc/rc.d/S97apache-user.sh restart
Dadurch wird nur das Verzeichnis von Tiny Tiny RSS mit einer leer open_basedir-Variablen versorgt.
 

ubuntulinux

Benutzer
Mitglied seit
23. Jan 2010
Beiträge
2.063
Punkte für Reaktionen
0
Punkte
82
Das kann ganz gefährlich werden... Ich selber hab TT-RSS mit Basedir am laufen, man muss nur 2 oder 3 Zeilen Code entfernen: 88,89,90 aus include/sanity_check.php
 

EL Duderino

Benutzer
Mitglied seit
02. Okt 2012
Beiträge
62
Punkte für Reaktionen
0
Punkte
0
bornheim schrieb:
Tiny Tiny RSS empfiehlt den Betrieb komplett ohne diese Variable, das referenzierte Wiki ebenfalls.
Da würde ich nicht so viel drauf geben. Der Autor des Wiki-Eintrags ist mir persönlich bekannt :cool: und der Programmierer von TTRSS will open_basedir leer haben, weil es sonst mit manchen Konfigurationen Probleme gegeben hat, die er nicht versteht. Bleibt die Hoffnung, dass sich jetzt (nach Exitus des Google Reader) mehr Leute um TTRSS kümmern, und da welche dabei sind, die Ahnung davon haben.

ubuntulinux schrieb:
Ich selber hab TT-RSS mit Basedir am laufen, man muss nur 2 oder 3 Zeilen Code entfernen: 88,89,90 aus include/sanity_check.php
Stimmt, hatte ich nicht ins wiki übernommen, weil der Programmierer evtl. keinen Support gibt.

Davon ab:
bornheim schrieb:
aus diesem Verzeichnis alles angezogen wird, dessen Name auf *.conf matcht. Das kann man sich wie folgt zunutze machen:
[…]
Dadurch wird nur das Verzeichnis von Tiny Tiny RSS mit einer leer open_basedir-Variablen versorgt.
Das funktioniert bei mir nicht. Checke es wie TTRSS mit
PHP:
<?php
	print ini_get('open_basedir');
	print "\n";
?>
Wie kann man weiter debuggen?
 
Zuletzt bearbeitet:

ubuntulinux

Benutzer
Mitglied seit
23. Jan 2010
Beiträge
2.063
Punkte für Reaktionen
0
Punkte
82
Ja, ich bin Syno-Gott :) Und nebenbei arbeite ich als Informatiker richtung Systemtechnik mit Schwerpunkt Linux/Security/Managed Server.

Nur weil TinyTiny RSS sagt, man soll es ohne machen, heisst es nicht, dass man es auch tun sollte. Es gibt (leider) auch Softwarehersteller, welche CHMOD 777 für ihre Scripte verlangen.
Vielleicht schnell für die Anderen: open_basedir definiert, in welchen Verzeichnissen PHP lesen sowie schreiben darf. Hat man zum Beispiel ein unsicheres Gästebuch ohne Basedir, kann ein Angreifer, welcher ein Loch darin findet, praktisch überall zugreifen, wo es per Filesystem-Berechtigungen erlaubt ist. Also je nach berechtigungsvergabe ziemlich viel. Ich weiss nicht, ob du das gut findest.

Nebenbei ist basedir bei allen gängigen Hostern aktiv, es sei denn, diese setzen auf Ausführung per CGI bzw suPHP/suexec.


Was für ein Unsinn. Tiny Tiny RSS empfiehlt den Betrieb komplett ohne diese Variable, das referenzierte Wiki ebenfalls. Mein Vorschlag schränkt das - wie gewünscht - auf genau das TT-RSS-Verzeichnis ein.

"Kann ganz gefährlich werden" -> http://de.wikipedia.org/wiki/Fear,_Uncertainty_and_Doubt

Syno-Gott, huh? :rolleyes:
 

ubuntulinux

Benutzer
Mitglied seit
23. Jan 2010
Beiträge
2.063
Punkte für Reaktionen
0
Punkte
82
BTW eben gerade gesehen dass im Wiki auch 777 verwendet wird, da nobody Schreibzugriff braucht. Auch wenn es nur teilweise ist, finde ich das nicht gut. Man sollte hier besser chown nutzen als 777en
 

EL Duderino

Benutzer
Mitglied seit
02. Okt 2012
Beiträge
62
Punkte für Reaktionen
0
Punkte
0
Vielleicht schnell für die Anderen: open_basedir definiert, in welchen Verzeichnissen PHP lesen sowie schreiben darf. Hat man zum Beispiel ein unsicheres Gästebuch ohne Basedir, kann ein Angreifer, welcher ein Loch darin findet, praktisch überall zugreifen, wo es per Filesystem-Berechtigungen erlaubt ist. Also je nach berechtigungsvergabe ziemlich viel. Ich weiss nicht, ob du das gut findest.
OK, das heißt, wenn
PHP:
 <?php
    print ini_get('open_basedir');
    print "\n";
?>
nur die leere Zeile ausgibt, darf php überall lesen und schreiben? Wie würde ich es einstellen, wenn php nirgendwo hinschreiben dürfte (rein hypothetisch)? Und wie ist das mit den Cache-Verzeichnissen von TTRSS? Die dürfen geschrieben werden, weil /var/services/web in open_basedir ist?

Davon ab: Ich nehme das mit dem Fummeln in sanitycheck auch ins wiki auf, würde aber trotzdem gerne wissen, wie sich open_basedir pro Pfad einstellen läßt, bzw. warum es bei mir nicht klappt.
 

EL Duderino

Benutzer
Mitglied seit
02. Okt 2012
Beiträge
62
Punkte für Reaktionen
0
Punkte
0
BTW eben gerade gesehen dass im Wiki auch 777 verwendet wird, da nobody Schreibzugriff braucht. Auch wenn es nur teilweise ist, finde ich das nicht gut. Man sollte hier besser chown nutzen als 777en
Wird nur für Cache-Verzeichnisse gemacht, da kann wenig schief gehen:)
 

ubuntulinux

Benutzer
Mitglied seit
23. Jan 2010
Beiträge
2.063
Punkte für Reaktionen
0
Punkte
82
nur die leere Zeile ausgibt, darf php überall lesen und schreiben? Wie würde ich es einstellen, wenn php nirgendwo hinschreiben dürfte (rein hypothetisch)?
Wenn basedir auf none gestellt ist, ist es überall erlaubt. Einen Basedir vergeben, der garnix darf, bringt nix weil er danach auch nicht mehr lesen kann.

Und wie ist das mit den Cache-Verzeichnissen von TTRSS? Die dürfen geschrieben werden, weil /var/services/web in open_basedir ist?
/var/services/web im Basedir heisst einfach, dass vom betreffenden vHost in /var/services/web/ alles gelesen sowie geschrieben werden darf.

Davon ab: Ich nehme das mit dem Fummeln in sanitycheck auch ins wiki auf, würde aber trotzdem gerne wissen, wie sich open_basedir pro Pfad einstellen läßt, bzw. warum es bei mir nicht klappt.
Habs eben versucht mit einem Location sowie Directory und beide Male wurde der basedir des vHosts übernommen.


Wird nur für Cache-Verzeichnisse gemacht, da kann wenig schief gehen
Die Files gehören dem root und nobody bekommt per 777 Lese/Schreibrechte. Wieso dann nicht das File dem Webserver-User geben? Macht absolut keinen Sinn ;)
 

EL Duderino

Benutzer
Mitglied seit
02. Okt 2012
Beiträge
62
Punkte für Reaktionen
0
Punkte
0
[...]
/var/services/web im Basedir heisst einfach, dass vom betreffenden vHost in /var/services/web/ alles gelesen sowie geschrieben werden darf.
OK, gilt also auch für Unterverzeichnisse/rekursiv? Oder ist das mit der Rekursion auch einstellbar?

Habs eben versucht mit einem Location sowie Directory und beide Male wurde der basedir des vHosts übernommen.
OK, aber warum klappt das bei mir nicht? Wo bekomme ich weitere Infos, wie Log-Einträge etc? Kann es am Port liegen (greife über 443 zu, und es wird im Router von einem weiteren Port umgeleitet)?

Die Files gehören dem root und nobody bekommt per 777 Lese/Schreibrechte. Wieso dann nicht das File dem Webserver-User geben? Macht absolut keinen Sinn ;)
Ja. Im Endeffekt kommt es trotzdem auf das selbe raus, von daher… Ich hatte mich das aber schon mal gefragt ;)
 

ubuntulinux

Benutzer
Mitglied seit
23. Jan 2010
Beiträge
2.063
Punkte für Reaktionen
0
Punkte
82
OK, gilt also auch für Unterverzeichnisse/rekursiv? Oder ist das mit der Rekursion auch einstellbar?
Ja, ist rekursiv. Rekursion lässt sich meines Wissens nach nicht ausschalten.

OK, aber warum klappt das bei mir nicht? Wo bekomme ich weitere Infos, wie Log-Einträge etc? Kann es am Port liegen (greife über 443 zu, und es wird im Router von einem weiteren Port umgeleitet)?
Bei mir geht es auch nicht. Habe im vHost einen basedir drin und möchte ihn für ein Verzeichnis auf none setzen. Geht nicht. Mit den Ports hat das nichts zu tun.
 

ubuntulinux

Benutzer
Mitglied seit
23. Jan 2010
Beiträge
2.063
Punkte für Reaktionen
0
Punkte
82
So wie ich das sehe sagt die Doku nur dass es mit vHosts geht, jedoch nicht per Directory/Location.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Was für ein Unsinn. Tiny Tiny RSS empfiehlt den Betrieb komplett ohne diese Variable, das referenzierte Wiki ebenfalls. Mein Vorschlag schränkt das - wie gewünscht - auf genau das TT-RSS-Verzeichnis ein.

"Kann ganz gefährlich werden" -> http://de.wikipedia.org/wiki/Fear,_Uncertainty_and_Doubt

Syno-Gott, huh? :rolleyes:
Findest du diesen Post nicht etwas unpassend? Wenn du nicht verstehst was openbasedir macht resp wofür es gut ist, dann solltest du nicht unbedingt andere "runterputzen" die es wissen.
Ich sage es mal so: openbasedir leer bedeutet schlampig programmierte Software. Ob du das nun gerne hörst oder nicht ist mir recht egal
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat