PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Apache: Webuser ändern ?



~Gh05t~
20.01.03, 23:16
Hiho,
ich hab bei mir n Linuxserver mit Apache laufen ( http://wnz.kicks-ass.net/ )
Im moment kann man über "http:.../~username/" auf die public_html verzeichnisser der User zugreifen.
Leider ist der User aber immer noch "wwwrun:nogroup".
Ist es möglich den jewails entsprechenden User zu benutzen? Weil sonst muss ich immer wenn ich von nem script ne datei schreiben will n verzeichnis mit chmod 777 machen, wenn ich die über die konsole bearbeiten will muss ich erst mir root den besitzer ändern, etc.

Kann ich z.B. wenn ich "http:.../~meier/" öffne einstellen, dass Apache den user "meier" benutzt statt "wwwrun"?

/edit: oder liegt das evtl. an noch was anderem, dass dateien für wwwrun erstellt werden?

thx4help

joey.brunner
21.01.03, 09:01
oh mein gott, was zur hoelle hast du vor? stell dir mal dieses szenario vor. du bist user ghost, du hast deinen eigenen docroot unter ~/public_html, du gibst auf dsa verzeichnis 777, was schon das erste total toedliche missgeschick ist ;). Sofort wieder rueckgaengig machen. Dieses Verzeichnis muss vom wwwrun oder nobody, wie halt dein apache laeuft gelesen werden, der braucht keine schreibrechte !!!!!! Himmel nochmal... ;)

So aber nun zu deiner idee, nehmen wir an, du hast dein publich_html verzeichnis wieder mit so netten weitreichenenden flags ausgestattet und nun wuerde der apache dort als user ghost laufen (was uebringends nicht moeglich ist, weil es der selbe server bleibt, du kannst auch beim forking keinen anderen server angeben). so, dann ist das erste was ich mache, dass ich dir dort eine datei ablege (shellskript), die dir dein passwort aendert oder ein rm -rf * vom root aus oder vom home... also mach das nicht !!!

so, nun zu einer moeglichkeit wie das ginge. du saugst dir nen zweiten apachen und kompilierst ihn, gibst ihm dabei userrechte von ghost, gibst als port 8080 an oder legst einen neuen docroot an.. genau /home/ghost/public_html... absolut nicht empfehlenswert, mach es nicht, mach es nciht, mach es einfach nicht !!! ;)

joey

gerd
21.01.03, 10:23
Du kannst ja auch mal versuchen die Verzeichnisse mit .htaccess zu schützen. Desweiteren soll es ein PAM Modul für den Apache geben welches dir eine Passwortabfrage ermöglicht. Ich habe das noch nicht getestet und kann dir deswegen auch nicht mehr sagen. Eine Anlaufstelle für die PAM Konfiguration könnte entwedere www.linuxmagazin.de oder www.linux-user.de sein.
Halt uns doch über deine Lösung auf dem laufenden.

~Gh05t~
21.01.03, 14:29
Original geschrieben von joey.brunner
oh mein gott, was zur hoelle hast du vor? stell dir mal dieses szenario vor. du bist user ghost, du hast deinen eigenen docroot unter ~/public_html, du gibst auf dsa verzeichnis 777, was schon das erste total toedliche missgeschick ist ;). Sofort wieder rueckgaengig machen. Dieses Verzeichnis muss vom wwwrun oder nobody, wie halt dein apache laeuft gelesen werden, der braucht keine schreibrechte !!!!!! Himmel nochmal... ;)

Ich habe vor genau DIESES Problem zu lösen...
Stell dir vor ich habe nen Server. Also MULTIUSER. Sollen sich alle User als wwwrun anmelden um Dateien hochzuladen? :rolleyes:


So aber nun zu deiner idee, nehmen wir an, du hast dein publich_html verzeichnis wieder mit so netten weitreichenenden flags ausgestattet und nun wuerde der apache dort als user ghost laufen (was uebringends nicht moeglich ist, weil es der selbe server bleibt, du kannst auch beim forking keinen anderen server angeben). so, dann ist das erste was ich mache, dass ich dir dort eine datei ablege (shellskript), die dir dein passwort aendert oder ein rm -rf * vom root aus oder vom home... also mach das nicht !!!

Ubs, jo, das habe ich auch gerade bemerkt...:D


so, nun zu einer moeglichkeit wie das ginge. du saugst dir nen zweiten apachen und kompilierst ihn, gibst ihm dabei userrechte von ghost, gibst als port 8080 an oder legst einen neuen docroot an.. genau /home/ghost/public_html... absolut nicht empfehlenswert, mach es nicht, mach es nciht, mach es einfach nicht !!! ;)

joey
Ok, ich lasse es. Wie soll dann ein User Dateien anlegen bzw. bearbeiten?
Irgendwie muss es doch möglich sein das zu realisieren...
Es gibt haufenweise Scripte die Dateien schreiben und lesen (im moment rede ich von PHP da weis ichs noch nit so gut, bei Perl ist es jedenfalls sehr häufig).
Theoretisch braucht ja auch nicht der webuser schreibzugriff auf diese dateien, sondern der CGI-Interpreter (perl oder php). Ich habe da ehrlich gesagt nicht soo den Durchblick, habe noch nit so viel erfahrung mit httpds...

Das einziege was ich weis ist, dass ich (als user) keinen zugriff auf die Dateien habe die das script generiert das ich (ebenfalls als User) erstellt habe und das finde ich extrem doof.
Ich kann diese Dateien löschen und neu erstellen, aber nicht bearbeiten. Das kann nur ein script. Hat es evtl was mit dem script zu tun? Habe bis her nur mit Perl gearbeitet, PHP is Neuland... muss man da was beachten beim erstellen von dateien? Kann ja eigentlich nicht sein, man benutzt ja den user wwwrun und der hat nur schreibrechte wenn chmod >= 666. Und das will ich nicht. Deshalb frage ich hier.

@joey.brunner: Ich hatte eigentlich nicht vor das ganze mit nem extra PW zu schützen...
Nehmen wir mal an ich will was schreiben wie ein Gästebuch und bin außer stande eine Edit-funktion zu schreiben (ich kann das zwar, aber ich will den server nicht alleine benutzen...). Wie soll ich dann einträge editieren wenn ich über FTP keinen zugriff auf die Datei habe? Mit .htaccess oder PAM müsste man ja beim eintragen n PW angeben... :ugly:

netzmeister
21.01.03, 14:40
Hallo,

immer diese Hobbyadmins. Arme Provider.

Wenn ich das so durchlese, fällt mir nichts mehr ein. Lieber ~Gh05t~, Du solltest Dir
über das Rechtesystem mal bei Gelegenheit eine gute Dokumentation reinziehen.

Unterhalb von /home sollte nichts dem wwwrun:nogroup gehören

Viele Grüße

Eicke

joey.brunner
21.01.03, 15:04
Hi,

also nochmal... Du hast ein Multiuser-System. Das ist schon mal gut ;). Worin liegt jetzt das Problem. Warum muessen die unbedingt Ihre Dateien im Homeverziechnis anlegen. Es waere doch viel sinnvoller virtuelle Hosts anzulegen. Jeder kann sich dann via SSH oder FTP anmelden, wird je nach seinem Usernamen in das jeweilige DocRoot geleitet, kann dort nicht raus und kann dort seine Dateien ablegen. Sei sehr vorsichtig mit Wildcards wie der Tilde ! Nichts sollte unterhalb von /home liegen. Fuer was hat man denn sonst einen DocRoot. Also verstanden ? Virtuelle Hosts, Chrooting der User (nimm den Usern die Shell, damit sie sich nciht einloggen koennen, sondern nur ueber ftp oder ssh) und bitte, bitte nie chmod 777 ;)

Bei Fragen fragen

Joey

~Gh05t~
21.01.03, 16:13
sagt mal wollt ihr mich nicht verstehen?

ICH BIN NUR HIER, weil ich KEINE dateien haben will die dem User "wwwrun" gehören und ich KEINE (K-E-I-N-E) chmods ÜBER 644 haben will.

Soweit klar?
Gut.
Dann bitte kein Kommentare wie "lass chmod 777" etc mehr, danke. :D
So, und damit is mein Problem beschrieben, ich habe im mom den Usern ihr Verzeichnis eingerichtet (jedem sein eigenes), in das er sich NUR per FTP einloggen kann und nicht da raus kann (chroot). Anzeigen kann er per HTTP, alles andere ist verboten.

Mein prob ist jetzt, das folgendes scritp eine Datei anlegt die dem User wwwrun:nogroup gehört:


<?php
$datei = "test.txt";
$file = fopen($datei,"w");
fwrite($file, "test");
fclose($file);
?>



gh05t@wnz-server:~/public_html/test> l
drwxr-xr-x 8 gh05t users 4096 Jan 20 17:08 ./
drwxr-xr-x 12 gh05t users 4096 Jan 12 17:25 ../
-rw-r--r-- 1 gh05t users 3226 Jan 21 15:47 index.inc.php
-rw-r--r-- 1 wwwrun nogroup 152 Jan 21 15:47 test.txt

gh05t@wnz-server:~/public_html/test> cat > test.txt
bash: test.txt: Permission denied

gh05t@wnz-server:~/public_html/test> rm test.txt
rm: schreibgeschützte Datei »test.txt« entfernen? j

gh05t@wnz-server:~/public_html/test> l
drwxr-xr-x 8 gh05t users 4096 Jan 20 17:08 ./
drwxr-xr-x 12 gh05t users 4096 Jan 12 17:25 ../
-rw-r--r-- 1 gh05t users 3226 Jan 21 15:47 index.inc.php

Ist jetzt mein Problem klar?
Wie das mit virtuellen Hosts ist weis ich noch nicht so genau, wenn das mein Problem lösen kann werde ich das versuchen.

@"immer diese Hobbyadmins" : Vielen Dank... wie gut das man es nicht lernen darf... ich bin halt noch mein Abi am machen, sorry das ich kein Geld für ne 10 MBit Standleitung habe...
Aber auch so sind schon 8 Seiten bei mir gehostet, und wenn mans im Kleinen nicht lernt, lernt mans nie. Es gibt halt auch Menschen die das noch nicht von Geburt aus können. :D

@Ich muss Tutorial lesen: Mache ich sehr viel und oft. Mal zu Linux, mal zu php/perl, mal zu C++,....
Ich erarbeite mir Lösungen gerne selber und lasse mir nur dann helfen wenn ich nicht weiter komme. Aber ich lasse mich so leicht nicht als Anfänger abstempeln (außer in PHP, das schreibe ich jetzt seit 5 Tagen), nicht bevor ich ne Lösung habe. Und da ich noch keine habe bin ich der Meinung, dass das sooo einfach gar nicht sein kann!

PS: Sry wenn das n bissl grob rüber kommt, is nicht so gemeint...:)

netzmeister
21.01.03, 16:34
Hallo,

von mir war das auch nicht so gemeint.

Dein Grundproblem ist ist das Anlegen von Dateien durch den Webserver.
Ich würde das nicht ermöglichen, Du handelst Dir da ein ziemliches Sicherheitsrisiko ein.

Ach, btw. ja, Deinen PHP solltest Du updaten, die 4.1.0 hat ein paar nette Fehler.

Ich würde in der php.ini den Safemode aktivieren. Die Dateien, die Du im Homeverzeichnis
unbedingt benötigst, legst Du in Verzeichnisse, die Du in der "ini" excludierst. Diese Dateien
legst Du von Hand an, mit den entsprechenden Berechtigungen.

Nur mal so ein paar Tips.

Viele Grüße

Eicke

P.S. das mit den Home basierenden virtuellen Hosts ist immer eine gute Diskussion
zwischen Webmastern :D

~Gh05t~
21.01.03, 20:37
verstehe...:D
PHP werd ich updaten, thx für den Tip.
Muss man das nicht anders kompillieren damit der in Safemode läuft?
Das löst aber leider immernoch mein Problem nicht. Bis her habe ich immer in meine MySQL Datenbank geschrieben, das war am effektivsten und relativ einfach. Das geht nur gerade mal nicht.
Kann es sein, dass das generell ein Problem ist? Ich habe das mal auf einem (mit teurem Geld bezahlten) server getestet auf den ich Zugriff habe. Der macht das genau so. Da hat der sogar stress gemacht als ich die datei über FTP löschen wollte. Das ist doch kein zustand, ist das ne generelle Unmöglichkeit oder wo liegt das problem?

Ist es nicht möglich alle von einem script erstellten dateien mit lese-/schreibrechten zu versehen und sie dem user dem das script gehört zuzustellen? Dann ist das script nicht ausführbar, kann also keine Probleme machen. Diese möglichkeit zum schreiben/lesen darf dann nur von localhost aus gehen (so wie der zugriff auf die MySQL-DB), um sicherzustellen, dass kein anderer als das script dateien erstellen und bearbeiten kann. Damit habe ich zwar schon wieder chmods über 644 (->666), aber wenn ich schreiben will muss ich entweder mit dem user schreiben dem die dateien gehören (was mir überhaupt nicht gefällt, da das dann bei allen Dateien möglich wäre) oder andere chmods haben. Und wenn das nur von localhost aus geht habe ich da kein Problem mit, oder? Ich meine ICH bestimme ja immernoch was in die dateien geschrieben werden kann und was nicht (über das script).

~Gh05t~
22.01.03, 16:16
Soll ich euch mal sagen warum ich ein Problem damit habe?
Ganz einfach:
Ich habe bis her nur Perl geschrieben. Und Perl macht diesen Stress im Gegensatz zu PHP NICHT!
Und ich denke was Perl kann kann php doch evtl auch.
Ich dachte immer PHP wäre ein bisschen einfacher, das hier beweist mir, das das NUR für die Syntax gilt.
Evtl. muss man dazu halt sowas wie n CGI-BIN verzeichnis verwenden, aber das muss doch gehen...