Hallo Zusammen,
vorweg - eine gelunges Forum, dass Ihr hier habt
Bei mir läuft Windows Apache und ActivePerl.
Wie kann ich die Verzeichnisrechte bei der Ausführung von cgi-scripts auf bestimmte Verzeichnisse (z.B. der virtuellen Hosts) sperren bzw. freigeben. Geht das evtl in der httpd.conf?
Derzeit ist es nämlich so, dass wenn jemand ein Perl Skript ausführt, könnte er damit theoretisch z.B. das ganze Windows Verzeichniss löschen/kopieren/zugreifen.
Er soll aber nur in seinem eigenen Webverzeichnis arbeiten können, alles was außerhalb ist, soll gesperrt sein.
Bei PHP gibt es diese open_basedir Funktion in der PHP.ini. Wie mache ich soetwas mit PERL unter Windows mit dem Apache ?
Vielen vielen herzlichen Dank schon im voraus für eure Antworten..
User since
2003-08-08
2561
Artikel
HausmeisterIn
Du kannst bestimmte Einträge in der httpd.conf setzen oder aber auch .htaccess benutzen. Mit
allow kannst du hierbei Rechte einzelner Directorys setzen oder eben verhindern.
Gruß, Erik!
s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}
It's not a bug, it's a feature! - [CGI-World.de]
User since
2005-04-02
4
Artikel
BenutzerIn
Danke für die schnelle Antwort Erik!
Aber ich blick noch nicht so recht durch, wie das funktionieren soll.
Ich hab z.B. den efileman (efileman.de) auf dem Webserver hochgeladen, mit diesem kann ich Dateien problemlos hochladen bearbeiten. Ist so eine Art Explorer, mit der man seinen Webspace verwalten kann. Damit ich dieses Script ausführen kann, hab ich in der httpd.conf folgende Einstellung im jeweiligen virtual host getroffen:
<Directory "D:/Inetpub/buerogestaltung.intern/efileman/">
AllowOverride All
Options Indexes FollowSymLinks ExecCGI
Order allow,deny
Allow from all
</Directory>
Nun hab ich zusätzlich ins Laufwerk C:\ eine htaccess kopiert, die folgenden Inhalt enthält:
order deny,allow
deny from all
Aber wenn ich über dieses Script, den efilemann z.B. in das Verzeichnis C:\Windows wechsle, werden mir alle Dateien angezeigt und ich kann diese auch problemlos ändern/löschen usw.
Das darf ja nicht sein und hierfür bräuchte ich einen Serverseitigen Schutz.
Bei PHP gibts halt das Open Base Dir, dabei wird überwacht, dass keine serverseitige Anwendung außerhalb der eingestellten Verzeichnisse zugreifen kann >> dann gibts nämlich ne Fehler meldung: Open_Base_Dir restriction ..
Hoffe Ihr habt eine Lösung für mich *verzweifele langsam*
Viele Grüsse auf München, Michael
User since
2003-08-07
2921
Artikel
BenutzerIn
Ich meine dein Problem müsste sich mit der Einstellung des DocumentRoot in der httpd.conf beheben lassen, denn außerhalb dieses Verzeichnisses kann man meines Wissens nicht mit einer Programmiersprache zugreifen.
Und weiter guckst du hier (um ein wenig mehr über htaccess zu erfahren):
http://de.selfhtml.org/servercgi/server/htaccess.htm
User since
2003-08-04
2145
Artikel
ModeratorIn + EditorIn
[quote=pktm,03.04.2005, 12:10]Ich meine dein Problem müsste sich mit der Einstellung des DocumentRoot in der httpd.conf beheben lassen, denn außerhalb dieses Verzeichnisses kann man meines Wissens nicht mit einer Programmiersprache zugreifen.[/quote]
Das stimmt nicht.
Innerhalb eines CGI-Programms kann man auf alles zugreifen, auf das der Benutzer, unter dem das CGI laeuft, Zugriff hat. DocumentRoot etc. ist da schnuppe.
Abhilfe schafft auch suexec da nur bedingt, da es zwar den Benutzer aendern kann, unter dem CGIs laufen, aber nicht dessen Rechte einschraenken.
Von anderen Zugriffsbeschraenkungen (ausser den ganzen Apache unter chroot laufen zu lassen) ist mir nichts bekannt, vor allem nicht unter Windows. Aber es gibt sicherlich andere, die sich besser mit Apache auskennen.
User since
2005-04-02
4
Artikel
BenutzerIn
Hallo Dubu, hallo Erik,
da muss ich Dubu Recht geben. Dem ist tatsächlich so.
Alles was über den Perl-Interpreter ausgeführt wird, hat nichts mit den Verzeichnisbeschränkungen der Webserverkonfiguration zutun.
Deshalb gibts ja suexec bei Linux, doch was gibts da für Windows.. *verzweifel*
Ich hoffe hier hat noch jemand einen Tipp für mich...
Viele Grüsse, Michael
User since
2005-01-17
14761
Artikel
Admin1
Das CGI erbt vom Apache die Rechte.
Da er als Dienst läuft, ist er meist mit vollen Adminrechten ausgestattet.
Im Prinzip müsstest du für eine eigenen Gruppe unter den Windows-Benutzern einrichten, die nur auf bestimmte Verzeichnisse zugreifen darf. Dnn bräuchtest du ein ein Perl oder EXE-Programm, das als Warpper für alle .cgi und .pl-Dateien agiert. Dieses prüft, ob die Verzeichnisrechte mit dem des Users übereinstimmen.
Hmm, ich habe bis jetzt nix im WWW gefunden, vielleicht schreibe ich mal was.
User since
2005-04-02
4
Artikel
BenutzerIn
Einen Extra-Benutzer habe ich bereits eingerichtet, aber nun kann Perl logischer Weise in alle Verzeichnisse reingreifen, in das der Apache auch reingreift bzw. reingreifen muss.
D.h. Alle www-Verzeichnisse und auch alle Apache Anwendungsverzeichnisse.
Es wäre Super, wenn Du nochmal was Posten könntest.
Viele Grüsse, Michael
User since
2005-01-17
14761
Artikel
Admin1
[quote=GMichael,17.04.2005, 15:54]Es wäre Super, wenn Du nochmal was Posten könntest.[/quote]
Wenn ich es fertig programmiert habe.
User since
2005-04-02
4
Artikel
BenutzerIn
Supi, freu mich schon darauf :)
Danke schon im vorraus