ftp-server mit webansicht der ftp-daten

[ geschrieben am 29.08.2010 in blog: der maschinist | tags: #, #, #, #, # ]

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…

  1. installation des ftp-servers
    apt-get install vsftpd

     

  2. 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

     

  3. installation des webservers
    apt-get install lighttpd

     

  4. anlegen des ftp-users
    useradd -d /var/www/ftp.server.de -s /usr/sbin/nologin ftpuser
    passwd ftpuser

     

  5. prüfen, ob die „nologin“-shell registriert ist
    cat /etc/shells | grep nologin

     

  6. gibt es keinen output, die „nologin“-shell registrieren
    echo "/usr/sbin/nologin" >> /etc/shells

     

  7. 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

     

  8. ftp-benutzer definieren
    echo ftpuser >> /etc/vsftpd.userlist

     

  9. 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"

     

  10. setzen des http-auth-passwortes für den ftp-user
    echo "ftpuser:ftppasswort" >> /etc/lighttpd/.lighttpdpassword
     
  11. 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"
    )
    )
    }

     

  12. aktivieren der webansicht-konfiguration
    ln -s /etc/lighttpd/conf-available/99-ftp.server.de.conf /etc/lighttpd/conf-enabled/99-ftp.server.de.conf

     

  13. 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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.