[linux-l] Webspace und SFTP - Die Herausforderung

Thorsten Stöcker tstoecker at baerensoftware.de
Do Sep 27 15:07:24 CEST 2007


Hallo,

also erst mal hää?

> Es geht um einen Webserver, auf den auch Freunde mal Webseiten hochladen
> können.
>

Sehr schön. Mit Virtual Hosts nehme ich an?

> PHP-Scripte erstellen ihre Dateien immer mit dem Besitzer, unter dem der
> PHP-Server gestartet wurde. Und solange nicht der Apache als Root läuft

Das würde ich mal fein bleiben lassen.

> und jeden PHP-Interpreter als externes Programm mit Userrechten aufruft,
> ist dieser Besitzer immer www-data.
> Ohne Klimmzüge mit PHP als CGI und Apache mit Suexec gehört also jede
> von PHP erstellte Datei www-data.
>

So? Und was wäre daran so schlimm? Ich nehme an, Deine Freunde brauchen einen 
Login, die Daten des Logins, sprich den User-Namen, ob über htaccess oder 
Datenbank, kannst Du ja übergeben. 

Leg eine Gruppe an, die die über keinerlei Rechte im System verfügt, und 
dieser Gruppe ordnest Du Deine User zu. Die melden sich dann über eine 
Web-Seite an (PHP-Script) und damit hast Du alles was Du brauchst.

Am Ende steht dann einfach nur ein chown username:group und ein chmod 0744.

> Jetzt komme ich zum Anliegen. Einem FTP-Server würde ich sagen, dass
> sich alle User als www-data mit ihrem Webspace als Rootverzeichnis
> einloggen. Nur leider wurde ein analoges Programm für SFTP wohl noch
> nicht erfunden. Scponly und rssh brauchen erstmal einen sinnlosen
> Dateibaum im chroot-Verzeichnis. Den könnte scponly dynamisch anbieten,
> aber das tut es nicht.
>

vsFTP

> Zusammenfassung: Die Webseiten gehören alle dem selben Benutzer, weil
> Apache üblicherweise so läuft, deshalb kann man den Webspacekunden nicht
> einfach SSH-Logins geben.

??? Nein, ganz sicher nicht.

> Es gibt auch keinen vernünftigen SFTP-Server, der einfach nach Angabe
> des Wunsch-Rootverzeichnisses funktioniert.
>

vsFTP

> Jetzt habe ich gerade noch eine Idee: Und zwar wird der Webspace jedes
> Kunden in sein Home abgebildet, und zwar dort mit seinem persönlichen
> User und seiner Gruppe. Der Kunde bekommt dann einen vollen SSH-Zugang
> und kann den gesamten wahren Webspacebereich nicht betreten. Kann man so
> etwas mit mount anstellen? Also mount /var/www/kunde1/ /home/kunde1/www/
> www-user:www-user->kunde1:kunden
>

Das Verzeichnis heißt public-html und befindet sich 
unter /home/username/public-html. Zu setzen über <UserDir> in der Conf des 
Vhosts, bzw. httpd.conf

> Eigentlich müsste der Apache standardmäßig Scripte als der Benutzer
> ausführen, denen das Script gehört, und openssh müsste chroot auf
> Knopfdruck beherrschen. Da das aber nicht der Fall ist, was haltet ihr
> von meiner Idee und wie kann man das am Geschicktesten umsetzen?
>

Also, ich weiß nicht wo Dein Problem mit ssh liegt, aber das ist auch erst ein 
Mal unwichtig. 

Die Lösung Deiner Probleme liegt in der Konfiguration von vhost, sofern Du 
mehrere Web-Seiten hosten willst.  Und zwar UserDir, Documentroot des vhost 
und Scriptalias. Unterverzeichnis vhosts.d enthält ein kommentiertes Template 
dafür. Du mußt nur darauf achten, das root ausgesperrt wird = UserDir 
disabled root.

Die andere Möglichkeit besteht darin, Apache mehrfach zu starten (was eine 
ziemlich Auslastung erzeugt, bei wenigen Hits aber machbar ist) und für jeden 
Benutzer eine eigene Konfig anzulegen.

Was in meinen Augen unverständlich ist, warum Benutzer per PHP-Script Dateien 
erstellen sollen, FTP-Zugang (nimm lieber WebDAV) haben und ssh nutzen 
sollen.

Gruß
Thorsten

-- 
Bären-Software
Thorsten Stöcker
Wichernstr. 40
13587 Berlin-Spandau
T: +49 (0)30 / 333 098 12
F: +49 (0)30 / 333 098 13
M: +49 (0)160 / 973 101 68
W: http://www.baerensoftware.de



Mehr Informationen über die Mailingliste linux-l