Für Debian-Squeeze gehts hier weiter!
Howto für Debian Lenny! (veraltet, obwohls auch unter Squeeze laufen sollte…)
Einrichten eines FTP Server mit Hilfe von Vsftp (Very Secure FTP)
Vsftp ist ein relativ kompakter FTP Server, der eine Vielzahl von Konfigurationsmöglichkeiten bietet. Ich versuche in diesem How-To zu erklären, wie man VSFTP installiert und in Betrieb nimmt.
Sobald der Ftpserver läuft, kommen wir zu etwas Feintuning.
Installation
Die Installation wird unter Debian Lenny vorgenommen. Da ich davon ausgehe, dass der Server keine GUI installiert hat (was bei einem Server grundsätzlich aus Sicherheitsgründen so sein sollte) muss vsftp mittels apt-get installiert werden.
Voraussetzung ist natürlich, dass man Rootberechtigungen hat.
In eine Konsole tippt man:
- apt-get install vsftpd
- gefolgt von einem Return
Ist man erfolgreich, dann sollte sich nach der Betätigung von Return folgendes am Bildschirm “abspielen”:
Wie man aus der Texausgabe erkennen kann, wird ein User ftp angelegt.
Prüfen ob der VSFTP-Dämon (Dienst) läuft
Um nun zu testen, ob der Dienst für den VSFTP läuft, tippt man in der Konsole:
- ps -A | grep vsftpd
- gefolgt – wie immer – von einem Return
Hier sollte die PID (Prozess ID) und zumindest vsftpd ausgegeben werden. Das bedeutet, der vsftpd ist gestartet.
Wenn man jetzt noch nachschauen will, ob der Ftpserver auch auf dem Port 21 “lauscht” kann man das mittels:
- netstat -a |grep ftp
- und Return
Auch hier sollte man eine entsprechende Ausgabe erhalten, dass FTP auf Port 21 “lauscht” (Listen)
Beide Befehle nochmals per Screenshot (So sollte es jetzt eigentlich aussehen):
Der Einfachheit halber, wäre es natürlich auch noch möglich, einfach mittels telnet eine Verbindung zum FTP Server herzustellen:
- telnet localhost 21
- und Return
Nun ist man mit dem VSFTP verbunden:
Da wir ja im Moment nichts zu tun haben, beenden wir die Verbindung durch die Eingabe von quit und Return.
Konfiguration mittels vsftpd.conf
Um den VSFTP zu konfigurieren, greift man auf die Datei vsftpd.conf zurück, die sich im Verzeichnis /etc befindet.
Mit dem Texteditor seiner Wahl, kann man diese Datei editieren. Ich greife auf vim zurück. Vim ist anfangs etwas gewöhnungsbedürftig, aber gut
Beispielkonfiguration
Die wichtigsten Eckpunkte der unten stehenden Konfiguration sind:
- Kein anonymer User kann sich einloggen
- Die User werden in Ihrem Verzeichnis eingesperrt
- Nur User erhalten Zugriff, die in einer definierten Liste (vsftpd.user_list) aufgeführt sind
- Die Dateiberechtigungen beim Upload werden so gesetzt, dass nur der uploadende User Vollzugriff auf die Dateien hat.
- write_enable=YES
- dirmessage_enable=YES
- nopriv_user=ftpsecure
- ftpd_banner=”Welcome (logging activated)”
- local_enable=YES
- file_open_mode=0755
- local_umask=000
- #userlist_file=/etc/usrliste
- userlist_deny=NO
- userlist_enable=YES
- chroot_local_user=YES Wichtig! FTP-User werden mit Hilfe dieses Parameter in Ihrem Homeverzeichnis “eingesperrt”. Sie können also NICHT aus Ihrer Verzeichnisebene “heraus”.
- local_max_rate=50000
- anonymous_enable=NO
- anon_world_readable_only=NO
- anon_upload_enable=NO
- log_ftp_protocol=YES
- xferlog_enable=YES
- vsftpd_log_file=/var/log/vsftpd.log
- xferlog_std_format=YES
- xferlog_file=/var/log/xferlog
- connect_from_port_20=YES
- pam_service_name=vsftpd
- listen=YES
Die Datei vsftpd.user_list
Die Datei befindet sich muss normalerweise im Verzeichnis /etc angelegt werden. Wenn der Name vsftpd.user_list eingehalten wird, dann muss in der vsftpd.conf NICHT explizit der Pfad zu dieser Datei angegeben werden.
Der Aufbau der Datei ist simpel. Die Usernamen werden einfach untereinander in die Datei hineingeschrieben.
User1
User2
…
Wie kommt man zu den Usern?
Es kann sein, dass der User ftpsecure noch nicht angelegt ist. Ohne diesen User läuft VSFTPD nicht! Deshalb muss dieser User eventuell auch erst angelegt werden. Der Befehl hierzu lautet:
useradd ftpsecure -m -d /www/ftpsecure -s /bin/false
Danach sollte man noch ein Passwort setzen!
Die User sind wie normale Anwender anzulegen. Es gibt aber ein paar Dinge, die es zu beachten gilt:
- FTP User erhalten keine Login-Shell (Ein FTP User muss sich nicht lokal am System anmelden können!)
- FTP User sollten als Homeverzeichnis das Verzeichnis zugewiesen bekommen, in das sie Ihre FTP Daten ablegen dürfen.
- Das Passwort sollte (wie überall) nicht zu einfach sein, wobei allerdings zu beachten ist, dass die Standardkonfiguration des VSFTP (wie oben gezeigt) KEINE Verschlüsselung vornimmt. D.h. also Klartext-Kennwörter! Mit VSFTP ist es aber durchaus möglich, auch verschlüsselte FTP Sitzungen zu realisieren. (Dazu mehr in einem späteren Beitrag)
Anlegen eines User “test” ohne Login-Shell mit einem fiktiven Homeverzeichnis “/www/test” + erstellen einer Gruppe ftp und Zuordnung des User “test” zu dieser Gruppe
In der Konsole tippt man:
- useradd test -m -d /www/test -s /bin/false (User wird ohne Loginshell und Homeverzeichnis /www erstellt)
- Setzen des Passwort für User test mittels passwd test und eintippen des frei wählbaren Kennwortes.
- Erstellen der Gruppe ftp mittels: groupadd ftp
- Zuordnung des User Test zur Gruppe ftp per usermod -g ftp test
- Um nun noch entsprechend auf das Verzeichnis /www/test/ Zugriff zu erhalten, muss mittels Befehl chown der Besitzer des Verzeichnis “www/test” zugeordnet werden: chown test /www/test und die Gruppe desselben Verzeichnis auf ftp gesetzt werden: chgrp ftp /www/test
WICHTIG: Den User test muss man ausserdem noch in die Datei /etc/vsftpd.user_list eintragen!
Anpassung von /etc/shells
Wenn für die Shell der FTP User /bin/false beim Anlegen der User verwendet worden ist, MUSS man in die Datei /etc/shells an unterster Stelle noch /bin/false hinzufügen und die Datei speichern, ansonsten klappt der FTP Login nicht.
Der finale Test – Jetzt oder nie
Wenn alles fertig konfiguriert ist, sollte man den FTP Dienst erneut starten. Dies erreicht man durch die Eingabe von:
- /etc/init.d/vsftpd restart
- und Return
Natürlich kann man auch gleich den PC neu starten, jedoch ist das nicht notwendig. Ist alles glatt gelaufen, sollte der Login ausschließlich mit dem Usernamen test und dem vergebenen Passwort klappen, alles andre sollte mit einer Meldung:
530 Permission Denied
Login failed
quittiert werden.
Sollte jemand Probleme, Tips oder Verbesserungsvorschläge haben, bitte einfach per Kommentar oder Email melden.



Hi ich habe mir das Tutorial angeschaut und so gemacht wie es beschrieben ist! Alles Top alledings bleibe ich an einer Stelle hängen mit dem “useradd ftpsecure -m -d /www/ftpsecure -s /bin/false” der bringt den Fehler: cannot lock /etc/passwd; try again later. was kann das sein was hab ich falsch gemacht!!##
Ich hab ein Ubuntu Server unter VMBox – Netzwerkbrücke -
Wissensstand: newb hoch3
Problem gelöst hat wohl ein bisschen damit zu tun das ich Ubuntu Server nutze und kein Debian!! ein bisschen eingabe fehler!
Danke Super Tut!!!
Ok. Telnet war mein Fehler, hatte vsftpd gerade gestoppt, weil ich den
500 OOPS: bad bool value in config file for: chroot_local_user
Fehler erhielt.
Trotzdem komme ich nicht weiter. Was will mir der Fehler sagen?
Hallo,
was hast du in deiner vsftpd.conf bei chroot_local_user= stehen? Bad Bool Value bedeutet, dass der Wert für den Parameter nicht stimmt. Bool = Wahr/falsch oder eben YES oder NO. Hast du schon mal die Konfigurationsdateien verwendet, die ich zum Download anbiete?
Was genau ist deiner Meinung nach verwirrend? Würde mich interessieren, denn dann kann ich es verbessern
WICHTIG: Du scheinst das Howto für Lenny zu verwenden, für Squeeze gibt es ein andres Howto, das ist ganz oben im Lenny Artikel verlinkt!
LG
Daniel
Nun sind ich seit 2 Tagen daran. Es ist teilweise sehr umständlich und verwirrend erklärt. Aber nun gut, am Ende habe ich alles gemacht wie es hier steht, kann mich aber nicht einloggen und erhalte als Ausgabe auf vsftpd:
500 OOPS: bad bool value in config file for: chroot_local_user
telnet klappt auch nicht. Da erhalte ich:
Trying ::1…
Trying 127.0.0.1…
telnet: Unable to connect to remote host: Connection refused
Und nun?
He jetzt funztz. Ich hab noch neu installiert und alles angepasst ausserdem noch dein Howto mit dem Debian Squeeze durchgeführt und siehe da, es klappt und macht genau das was ich will einfach PERFEKT!!! Danke nochmal und weiter so is echt gute Arbeit und für jeden Anfänger zu empfehlen!
Super, freut mich.
Na es kommt die Meldung:
500 OOPS: could not bind listening IPv4 socket
was ja heist das der Server schon läuft oder?
Grüße
Ja, läuft bereits. Mach bitte vorher ein /etc/init.d/vsftpd stop. Danach nochmals nur vsftpd in der Konsole eintippen. Ich habe jetzt außerdem mein Howto etwas angepasst. (bin/false in der /etc/shells ist nicht mehr nötig.) Habe das ganze mit Debian Squeeze gerade durchgespielt und es funktioniert.
Link: http://www.pc-howto.com/internet/vsftp-howto-lenny/ (ist für Squeeze, auch wenn im Link LENNY steht)
LG
Habe das gleiche Problem wie Mac und habe nun /bin/false in die /etc/shells eingetragen aber leider funktioniert dies nicht. Was kann ich noch tun?
Danke im vorraus
Hallo,
mach mal ne Konsole auf und tippe dort:
vsftpd gefolgt von Return.
Was erhältst du da? Kommt eine Fehlermeldung?
Hallo, schöne Anleitung besser als alles was ich bis jetzt gefunden habe. Ich bekomme beim verbindungsaufbau die meldung “331 Please specify the password”. Hab das Passwort auch schon geändert aber erhalte immer wieder diese Meldung!
Ansonsten alles top!
Danke schonmal im vorraus.
Servus!
Hast du in /etc/shells /bin/false hinzugefügt? Ich hatte hier schon mal nen Kommentar, dass es so zwar keine “saubere Lösung” ist, bei mir hats bislang aber immer funktioniert.
LG
Daniel
Hey.
Danke für die schnelle Hilfe.
Es funktioniert jetzt und ich habe Zugriff per FTP.
Eine Anfängerfrage habe ich aber noch, da ich bei Google nichts finden konnte, was mir weiterhilft.
Wie muss/kann ich die Rechte vergeben? Also durch welchen Befehl?
Sorry für die blöde Frage.
mfg
Bei den Berechtigungen unterscheidet Linux User, Gruppe und others (alle andren). Dies wird duch 3 “Ziffern” dargestellt. Jede Ziffer gehört Quasi zu einer Gruppe.
So würde die Berechtigung 777 bedeuten, dass alle Vollzugriff haben. 7 für User 7 für Gruppe und 7 für alle andren
755 bedeutet der User hat Vollzugriff, die Gruppe und alle andren dürfen lesen und ausführen aber nicht schreiben.
Da du am FTP Server mit dem Usernamen einloggst, sollte der User Vollzugriff haben, alle andren nur lese und ausführen können.
D.h. du gehst in ne Konsole und machst als root folgendes:
1. Wechsel in dein Verzeichnis (das FTP Verzeichnis des User)
2. Danach tippst du chown -R deinftpuser *
3. chgrp -R ftp * (die von dir angelegte Gruppe ftp)
4. chmod -R 755 * (setzt die Berechtigungen wie oben beschrieben)
5. möglicherweise musst du dann noch aus deinem ftp Verzeichnis rausgehen mittels cd.. und deinem FTP Verzeichnis auch noch die beschriebenen Rechte und User / Gruppen geben.
Normalerweise sollten alle von dir per FTP raufgeladenen Dateien / Ordner dann diese Berechtigungen erhalten.
Hallo.
Ich habe die Anleitung soweit befolgt und soweit ich das beurteilen kann, hat das soweit funktioniert.
Allerdings kommt folgende Meldung, wenn ich “chown test /www/test” eingebe: chown: Zugriff auf “/www/test” nicht möglich: Datei oder Verzeichnis nicht gefunden
Das ist wahrscheinlich auch der Grund, warum es noch nicht funktioniert
Was muss ich tun, damit es funktioniert?
Da es jetzt das erste mal ist, dass ich mit Linux arbeite, bin ich noch blutiger Anfänger. Deswegen sorry für diese wahrscheinliche “blöde” Frage
Achso, eine Frage hätte ich dann zu guter letzt noch: Kann ich mit FileZilla dann auf den Server zugreifen?
Ich sage schon mal vielen vielen Dank.
Ansonsten eine Anleitung, die selbst ich als Anfänger gut verstehe.
Gruß
Teufel320i
Servus!
Hast du einen Ordner /www/test auf deinem Webserver?
Ich hatte da wohl einen Fehler in meiner Anleitung. Um den User und das Homeverzeichnis anzulegen lautet der Befehl: useradd -m -d /www/test. Ohne das -m wird das Verzeichnis nicht erstellt.
Prüfe bitte, ob du das Verzeichnis auf deinem Linuxserver hast.
Du musst es sonst erstellen. Zb. in nem Terminal als root:
cd /
mkdir www
cd www
mkdir test
danach kannst du mit chown und chmod die entsprechenden User, Gruppen und Rechte zuweisen.
LG
hi danke für das tutorial, super verständlich und gut gemacht
Vielen Dank für das super Tutorial. Erst nach deinem Tutorial hat mein ftp Server funktioniert ;o).
Hy … Also ich muss den Verfasser loben!
Das tutorial ist sehr gut und verständlich aufgebaut.
weiter so ..
viel Glück an alle !
ja scheiße ist habe tut befolgt nach “user add” server abgeschmirt!
Leider bekomm ich bim Restarten folgende Meldung:
Restarting FTP server: vsftpdNo /usr/sbin/vsftpd found running; none killed.
.
Hallo!
Was macht ein:
/etc/init.d/vsftpd start
bzw. siehst du beim Befehl:
netstat -a |grep ftp
dass hier FTP (Port 21) läuft bzw. gelistet wird?
es hat einen sinn, weshalb /bin/false _NICHT_ in /etc/shells eingetragen ist…da hat auch auswirkungen auf andere dienste!
sinnvoller ist es pam umzustellen, z.b.
in /etc/pam.d/vsftpd
folgendes eintragen:
#auth required pam_shells.so
auth required pam_localuser.so
(die auskommentierte zeile, ist der standardwert gewesen)
Hallo und was wen bei telnet localhost 21 nicht das da oben raus kommt sondern nix? pff imer das selbe ^^
solsche problemen werden dan natürlich nicht beschrieben.
So siehts bei mir aus.
diavolo@dks-darkstar:~$ sudo telnet localhost 21
Trying ::1…
telnet: Unable to connect to remote host: Connection refused
Mit oder ohne sudo das selbe, auch wen ich als root einloge. da fehlt das localhost aber welsche datei??
mfg
Hallo!
Läuft der VSFTP Dienst? Hast du die Anpassung in /etc/shells gemacht?
“Fehlermeldung” war das Stichwort – ich hatte keine, und habe es dann via Konsole probiert…
Die Einstellung
chroot_list_file=/etc/vsftpd.chroot_list
muss auskommentiert sein.
vielen Dank !
Hallo !
Vielen Dank für dieses tolle Tutorial.
Leider bekomme ich immer noch keinen Zugriff auf meinen FTP.
Woran kann es noch liegen ?
beste Grüße
Hallo … Welche Fehlermeldung erhältst du?
Hi,
habe VSftp auf einem Debian-VServer laufen. Leider habe ich das Problem, dass ich als ftp-User nicht in die Homepage-Verzeichnisse schreiben kann. Hier kollidieren der “www-data”-user und der “ftp”-user. Kann man hier den vsftp entsprechend einstellen?
Mfg
was genau verstehst du unter kollidieren?
Bei dieser Stelle soll ich trotzdem eine passwort eingeben:
“Entfernen der Passphrase:
openssl rsa -in vsftp.key -out vsftp_clean.key”
Habe ich was übersehen?
Hallo!
Nein, du hast nichts übersehen, die Passphrase wird bei diesem Vorgang noch einmal abgefragt. Du erhältst dann den Key ohne Passwort.
LG und danke fürs Verlinken!
Vielen Dank für das verständliche HowTo. Also Win-User habe ichs damit geschafft.
Zitat:
Mit VSFTP ist es aber durchaus möglich, auch verschlüsselte FTP Sitzungen zu realisieren. (Dazu mehr in einem späteren Beitrag)
Gibt es diesen Artikel schon. ?
Hallo!
Ja, gibt es:
http://www.pc-howto.com/?s=vsftp
LG
Auch nach 2 Jahren immer noch TOP!!!! Hat alles super funktioniert.
Vielen Dank!
Danke!
TOP TUTORIAL!!!
das einzige in dem es auch für anfänger verständlich erklärt ist!
meine vollen respekt!
gruß
h4wk