[linux-l] Webspace und SFTP - Die Herausforderung
Ralph Angenendt
ralph at strg-alt-entf.org
Do Sep 27 15:40:45 CEST 2007
Thorsten Stöcker wrote:
> Hallo,
>
> also erst mal hää?
Okay, antworte ich doch noch mal länger ...
> > 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.
Und wer macht den chown? Das PHP-Script welches nicht als root läuft?
Viel Spaß dabei.
>> 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
Was hat das mit scponly zu tun?
>> 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.
Ganz sicher was nicht?
>> Es gibt auch keinen vernünftigen SFTP-Server, der einfach nach Angabe
>> des Wunsch-Rootverzeichnisses funktioniert.
>>
>
> vsFTP
Wie schon mal gesagt: vsftpd ist ein FTP-Server und beherrscht kein
SFTP.
>> 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
Nein, das Verzeichnis heißt public_html (oder wie immer du es nennen
willst). Das hilft aber bloß gar überhaupt nichts, weil damit nur URLs
der Art <http://example.com/~username/> möglich sind.
>> 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.
Dass er es im Normalfall nicht nutzen kann, weil ssh nicht einfach mal
so chroot-fähig ist. Wobei ich bei passender Rechtevergabe nicht
verstehe, wo genau da das Problem liegt.
> 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.
UserDir geht aus obengenannten Gründen nicht (außer man fängt an mit
modrewrite oder modredirect zu arbeiten. Und das möchte man auch nicht
immer.
> 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.
Du kannst nicht mehrere Apachen auf einem Port lauschen lassen. Das geht
also schon mal nicht.
> 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.
Weil FTP die Userdaten im Klartext über das Netz schiebt. Und weil
WebDav auch *immer* mit den Rechten des HTTP-Servers schreibt.
An den Fragesteller:
Nutze mod_vhost_alias:
<http://httpd.apache.org/docs/2.2/mod/mod_vhost_alias.html>
Lege /var/www/vhosts/www.domain1.de bis /www.domain20.de an.
Dein VirtualDocumentroot heißt dann
VirtualDocumentRoot /var/www/vhosts/%0
Gebe jedem Nutzer "sein" Domainverzeichnis als home (in der passwd).
chown nutzer1:httpd www.domain1.de
chown nutzer2:httpd www.domain2.de
chown nutzer3:httpd www.domain3.de
chmod 0750 www*
chmod g+s www*
Schon darf dein Apache in den Verzeichnissen lesen. Kein Nutzer darf in
den Verzeichnissen anderer Nutzer lesen und schreiben. Und durch das
chmod g+s werden neue Dateien unterhalb der www.domain*.de-Verzeichnisse
automagisch der Gruppe httpd gegeben.
Reicht dir das als "Sicherheit"?
Dann geht das auch mit ssh.
Cheers,
Ralph
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : nicht verfügbar
Dateityp : application/pgp-signature
Dateigröße : 189 bytes
Beschreibung: nicht verfügbar
URL : <https://mlists.in-berlin.de/pipermail/linux-l-mlists.in-berlin.de/attachments/20070927/81830463/attachment.sig>
Mehr Informationen über die Mailingliste linux-l