Dies ist eine alte Version des Dokuments!
Die Idee ist, ein Verzeichnis so einzurichten, dass man per FTP und Webdav auf diesen Verzeichnis lesend & schreibend zugreifen kann.
Dabei sollen beide Server auf das gleiche Passwort-File zugreifen, um doppelte Pflege der Datei zu verhindern.
Es wird hier kein Wert darauf gelegt, dass sich mehrere Nutzer auf verwsch. Verz. einloggen können. Vielmehr loggen sich alle Nutzer in des selbe Verzeichnis ein. Die Nutzer können jedoch versch. Passwörter haben.
Als Webdav soll das Webdav-Modul von Apache2 zum Einsatz kommen. Webdav soll schon eingerichtet sein. Anleitung hier
Als FTP-Server kommt VSftpd zum Einsatz. Anleitung hier.
Das gemeinsame Passwort-File ist:
/var/www/webdav-ftp-password
Anzulegen ist die Datei z.B. für User Gerald mit
htpasswd -c /var/www/webdav-ftp-password gerald
(Weitere User ohne -c). Die Datei sollte natürlich nicht für Webuser lesbar sein, sondern nur für Root (mein Webserver liegt nicht direkt unter /var/www/).
Der gemeinsam zu nutzende Ordner liegt in unserem Beispiel unter /var/www/webserver/webdav/
Der Webdav verwendet normalerweise zur Authentifizierung Digest
, vom PW wird nur der Hash übertragen. Wir 'downgraden' zu Basic
mit einer Übertragund in Klartext. Allerdings können wir bei Webdav & FTP auf verschl- Verbindung zurückgreifen, um das Problem zu entschärfen.
Downgraden von Digest in Basic:
Änderungen in: /etc/apache2/sites-enabled/000-default
<Location /webdav> DAV On # AuthType Digest AuthName "WebDav" AuthType Basic AuthUserFile /var/www/webdav-ftp-password Require valid-user </Location>
Nach login: 500 OOPS: cannot locate user entry
Er findet die Umgebungsvariablen des User nicht, weil es den User gar nicht gibt (nur virtuell).
Wenn es den User in echt gibt, der in der Passwort-Datei steht, dann gehts…
Lösung: /etc/vsftpd.conf:
guest_enable=YES guest_username=nobody
Nach login: 500 OOPS: cannot change directory:/nonexistent
Geht auch nicht mit Usern, die wirklich existieren
Zumindest bei meinem Debian gibt es keine Datei /lib(64)/security/pam_pwdfile.so
.
Das Paket wird nicht standardmässig installiert. Fehlermeldung von vsftpd gibt es keine; lediglich die /var/log/auth.log gibt einen Hinweis darauf.
Man kann das Paket leicht nachinstallieren:
apt-get install libpam-pwdfile