Lese-Erlaubnis zwischen Usern und www-data

fanic

New Member
Hallo,

ich habe hier schon etliche Beiträge durchgeguckt in der Hoffnung eine Lösung zu finden. Ich beschäftige mich seit einigen Tagen mit folgendem Problem:

Ich habe einen kleinen vServer (Debian 6, ohne Konfigurationstools vom Anbieter) mit einigen Sachen laufen (TS3, eggdrop usw.) und ebenfalls einen Webserver darauf installiert (kein fertig Paket, sondern aktuelles Apache2 mit PHP, MySQL und Perl).

Für die Web-Projekte die auf diesem Laufen habe ich je einen Benutzer eingerichtet. Die jeweiligen Userverzeichnisse sind dabei /var/www/<user>

Die Dateien gehören dem User und befinden sich in der Gruppe des Users. Upload Ordner für die Projekte gehören dem user www-data und genutzt wird ebenfalls ein Smarty unter /usr/local/lib/php/Smarty welches ich dem www-data:www-data zugewiesen habe.

So genug der langen Beschreibung, ich versuche die Skripte eines Users nicht durch einen anderen User lesen zu lassen. Aktuell müssen die Skripte ja lesbar durch "other" sein damit www-data diese aufrufen kann, dann kann natürlich auch jeder der anderen user über seinen sftp oder ssh Account diese angucken. Wenn ich die Dateien natürlich in die www-data Gruppe packe benötige ich nicht mehr die Leseerlaubnis für alle, aber die anderen User sind ja dann zum Teil ebenfalls in dieser Gruppe?

Also ich habe einiges bereits hin und her probiert und immer war irgendwas zu viel oder zu wenig lesbar. Gib es einen Standardweg für dieses Problem? Ich habe leider keine Beschreibungen dafür gefunden.


viele Grüße und vielen Dank für eure Hilfe im Voraus!
 
danke :-) Das geht ja auf jeden Fall schonmal in die benötigte Richtung.

Aber nun ist das ja im Prinzip nur für CGI Skripte gedacht? Mir gehts ja auch darum, dass sich alle Dateien die ich mit (beispielsweise) chmod 755 einrichte (damit der www-data diese lesen kann) auch von jedem User per ssh und co ausgelesen werden können (darunter natürlich auch Passwörter). Aktuell ist das bei mir Gott sei Dank kein Problem, auf dem vServer arbeitet nur noch eine weitere Person drauf, aber irgendwie stört mich der Gedanke nicht zu wissen wie ich das vernünftig einstelle wenn ich noch mehr User darauf arbeiten lasse.

Ich hab wahrscheinlich auch noch nicht suexec völlig verstanden. Kann man damit alle Dateien sozusagen als www-data laufen lassen obwohl sie dem user x gehören?
 
Jeder User hat unter Debian eigentlich auch eine gleichnamige Gruppe. Da steckst du jeweils den User www-data rein. Anschließend beschränkst du den Zugriff der einzelnen Webs auf 750, also keine Zugriff mehr für Other. Damit hast du den Zugriff per SSH/FTP eingeschränkt.
Da auch Scripte (PHP, Perl, etc.) hier eine Einschränkung benötigen, dürfen diese natürlich eben nicht als www-data laufen. Und da kommt suexec ins Spiel, oft in Verbindung mit FastCGI. Allerdings wirst du dich dann wohl von einem zentralen Smarty verabschieden müssen
 
okay, dann lass ich das mit dem zentralen Smarty.

Ich habe das jetzt so gemacht und hatte einen weiteren Fehler leider. Der hat beim Testen wohl verhindert, dass ich bei der richtigen Lösung angehalten hab ;-)

Code:
pcfg_openfile: unable to check htaccess file, ensure it is readable

Was ich behoben hab, indem ich den eigentlichen www Ordner des Users der www-data Gruppe zugewiesen hab, ich denke das sollte normalweise auch der Fall sein.

Also scheint zu laufen, vielen Danke an euch! :D
 
Dann kann aber jeder User, den du in die Gruppe www-data packst, ebenfalls in den Ordner rein schauen. Vermutlich hast du den Apache-User (www-data) nicht in die Gruppe des Users gepackt,
 
Ja damit sieht jeder die oberste Ordner Struktur aber kann nicht weiter darauf zugreifen. In anderen Fällen kam das Problem, dass der Server wegen der htaccess gemeckert hat. Weiter hat mich das nicht gestört weil es im Prinzip ne sache aus Neugierde ist. User die ich nicht kenne kommen mir nicht an den Server :-) ich teste nachher nochmal weiter.
 
Wenn dein User auf dem Server fanic heißt, wird unter Debian standardmäßig auch eine Gruppen namens fanic angelegt. In diese packst du den Apache-User (unter Debian www-data) rein. Dann stellst du ein, daß das oberste Verzeichnis dem User fanic und der Gruppe fanic gehört und setzt als Zugriffsrecht rwx für den User, rx für die Gruppe und keinen Rechte für alle anderen.
Dank suexec laufen dann z.B. PHP-Scripte unter dem User fanic und können dadurch auch unterhalb dieses Verzeichnisses Dateien erstellen, editieren (z.B. Dateiupload vom Forum). Der Apache-User bekommt über die Gruppe Leserechte, mehr braucht er bei suexec auch nicht.
 
so, ich hab das jetzt mit suPHP gelöst für die ganzen PHP seiten.
War zwar ein Krampf das einzurichten, aber funktioniert nun tadellos, mit den Rechte, so wie du sie gesagt hast.

Vielen Dank nochmal! :)
 
suPHP statt suexec geht natürlich auch, letztendlich ist das ein wenig Geschmacksache. Es gibt für Apache auch MPMs, die dieses Ziel erreichen, das sei aber nur der Vollständigkeit halber erwähnt.
 
Back
Top