aufgabe ist es, einen ftp-server mit web-ansicht der ftp-daten aufzusetzen. im konkreten fall soll der ftp-server lediglich für das filesharing genutzt werden und die web-ansicht dazu dienen, fehlerhaften links in emails bzw. denen, die darauf klicken eine ansicht der ftp-daten zu erlauben. apple mail versieht die eingegebene adresse “ftp.server.de” z.b. immer mit dem html-link “http://ftp.server.de”.
es wird von nur einem ftp-konto ausgegangen und davon, dass der server keine weiteren aufgaben hat. der webserver wird also nur zur ansicht der ftp-daten genutzt. natürlich kann man die anleitung auch für einen shared-hosting-webserver mit jeweils einem ftp-account pro virtueller webdomain nutzen.
die eingesetzte linux-distribution ist ubuntu 10.04 lts – die unterschiede zu anderen distributionen sollten aber minimal sein. als ftp-service wird “vsftpd”, als webservice “lighttpd” eingesetzt. sowohl der ftp-server als auch der webserver werden unverschlüsselte authentifizierungsmethoden nutzen – sicherheitsmäßig “aufbohren” kann man das ganze später immernoch…
- installation des ftp-servers
apt-get install vsftpd
- konfiguration des ftp-servers
cp /etc/vsftpd.conf /etc/vsftpd.conf.ORIG
mc -e /etc/vsftpd.conf# /etc/vsftpd.conf
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=0007
file_open_mode=0770
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=NO
chroot_local_user=YES
#chroot_list_file=/etc/vsftpd.chroot_list
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
userlist_deny=NO
- installation des webservers
apt-get install lighttpd
- anlegen des ftp-users
useradd -d /var/www/ftp.server.de -s /usr/sbin/nologin ftpuser
passwd ftpuser - prüfen, ob die “nologin”-shell registriert ist
cat /etc/shells | grep nologin
- gibt es keinen output, die “nologin”-shell registrieren
echo "/usr/sbin/nologin" >> /etc/shells
- benutzerrechte auf den ftp-ordner anpassen
chown -Rf ftpuser.www-data /var/www/ftp.server.de
chmod -Rf 775 /var/www/ftp.server.de
chmod g+s /var/www/ftp.server.de - ftp-benutzer definieren
echo ftpuser >> /etc/vsftpd.userlist
- konfiguration des http-auth-modules des webservers
lighty-enable-mod auth
mc -e /etc/lighttpd/conf-available/05-auth.conf## Authentication for lighttpd
server.modules += ( "mod_auth" )
auth.backend = "plain"
auth.backend.plain.userfile = "/etc/lighttpd/.lighttpdpassword"
- setzen des http-auth-passwortes für den ftp-user
echo "ftpuser:ftppasswort" >> /etc/lighttpd/.lighttpdpassword
- konfiguration der webansicht des ftp-ordners
mc -e /etc/lighttpd/conf-available/99-ftp.server.de.conf
# 99-ftp.server.de.conf
$HTTP["host"] == "ftp.server.de" {
server.document-root = "/var/www/ftp.server.de"
auth.require = ( "/" =>
(
"method" => "basic",
"realm" => "ftp.server.de web access",
"require" => "user=ftpuser"
)
)
}
- aktivieren der webansicht-konfiguration
ln -s /etc/lighttpd/conf-available/99-ftp.server.de.conf /etc/lighttpd/conf-enabled/99-ftp.server.de.conf
- ftp und webservice neu starten
/etc/init.d/vsftpd restart
/etc/init.d/lighttpd restart
nun sollte es möglich sein, dass ftpuser sich mit seinem ftp-client der wahl auf ftp.server.de einloggen kann und daten hoch- und herunterladen kann. loggt sich ftpuser mit dem webbrowser ein, so gelingt das nun sowohl mit dem "ftp://"- als auch mit dem "http://"-adresspräfix. wenn in den schritten 4 und 10 das gleiche ftp-passwort vergeben wurde, bleibt die anmeldung für den benutzer absolut transparent.