cybton.com
Über uns | Jobs | Werbung | Sitemap | AGB | Impressum | Hilfe ?
 Kostenlos anmelden)
eBooks
Hochgeladene Bilder
Letzte Änderungen

Lexikon

Bücher
Themengebiete

Tutorials


Statistik
Mitglieder gesamt: 68138
Mitglieder online: 3
Gäste online: 6
mehr...

Anzeige
Tutorials » Tutorials: Sonstiges » Tutorial: FTP Server (PureFTPd) auf Linux einrichten

Tutorial: FTP Server (PureFTPd) auf Linux einrichten

FTP Server (PureFTPd) auf Linux einrichten

Einrichtung eines FTP Servers unter Linux mit PureFTPd und virtuellen Benutzern


Ziel dieses Tutorials ist das Einrichten eines FTP Servers für Linux mit virtuellen Benutzern. Virtuelle Benutzer in dem Sinne, dass dafür keine bzw. nur ein Systembenutzer benötigt wird. Dies lässt das System weitaus sauberer erscheinen.

PureFTPd unterstützt seit Version 0.99.2 virtuelle Benutzer.

Wie ihr PureFTPd installiert sollte euch durchaus klar sein und wird in diesem Tutorial nicht behandelt.

Los geht’s:

Anlegen eines Systembenutzers:
PHP:
1
server ~ # groupadd ftpgroup
PHP:
1
server ~ # useradd -g ftpgroup -d /dev/null -s /etc ftpuser
Was haben wir da grade gemacht?
[*] Eine Gruppe mit dem Namen 'ftpgroup' erstellt.
[*] Einen Benutzer 'ftpuser', der in der Gruppe 'ftpgroup' ist, das Homeverzeichnis '/dev/null' (also gar nix) und die Shell /etc (also auch nix) zugewiesen bekommen hat, erstellt.

Anlegen eines FTP Benutzers mit dem Namen 'helmut'
Zusätzlich werden wir dem Benutzer nur 10 MegaBytes zur Verfügung stellen.
PHP:
1
server ~ # pure-pw useradd helmut -u ftpuser -g ftpgroup -d /home/pubftp/helmut -N 10
Danach muss das Passwort zweimal eingegeben werden.

Was haben wir da grade gemacht?
[*] Der Benutzer 'helmut' besitzt nun die Rechte vom Systembenutzer 'ftpuser' (-u ftpuser). Werden nun von diesem Benutzer Dateien per FTP hochgeladen, so haben diese die Rechte von 'ftpuser' bzw. 'ftpgroup'.
[*] Der Benutzer wurde ins Verzeichnis '/home/pubftp/helmut' verbannt („chrooted“). Er kann nicht aus diesem Verzeichnis heraus und in andere Verzeichnisse (wie zum Beispiel Verzeichnisse von anderen FTP Usern) ansehen.
[*] Der Benutzer darf nur 10 MegaBytes Speicherplatz verwenden (-N 10).

Wo werden die ganzen Benutzer gespeichert?
Die Benutzer werden standardmäßig in der '/etc/pureftpd.passwd' gespeichert. Jedoch werden alle Änderungen in dieser Datei nicht vom FTP Server gleich angewandt. Dazu muss erst die Datenbank (PureDB Datei) erzeugt werden:
PHP:
1
server ~ # pure-pw mkdb
Jetzt sollte die Datenbank aktualisiert sein. Sie wird standardmäßig in '/etc/pureftpd.pdb' abgelegt. Es ist zudem eine binäre Datei, in der die Benutzerkonten jedoch sortiert sind und für den schnelleren Zugriff indiziert werden. Das ist vor allem für größere Systeme von Vorteil, da dort meist an die 1000 Konten verwaltet werden müssen.



Benutzerinformationen abfragen
Erst alle Benutzer auflisten lassen:
PHP:
1
server ~ # pure-pw list
Dann den gewünschten abfragen:
+ PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
server ~ # pure-pw show helmut
 
Login              : helmut
Password           : $1$mAo8X9D0$KFc0bkrGyBKo7x.fOAHLh1
UID                : 1002 (ftpuser)
GID                : 409 (ftpgroup)
Directory          : /home/pubftp/helmut/./
Full name          : 
Download bandwidth : 0 Kb (unlimited)
Upload   bandwidth : 0 Kb (unlimited)
Max files          : 0 (unlimited)
Max size           : 10 Mb (enabled)
Ratio              : 0:0 (unlimited:unlimited)
Allowed local  IPs : 
Denied  local  IPs : 
Allowed client IPs : 
Denied  client IPs : 
Time restrictions  : 0000-0000 (unlimited)
Max sim sessions   : 0 (unlimited)
Warum ist da ein '/./' am Ende vom Verzeichnis?
Das bedeutet schlicht und einfach, dass der Benutzer „chrooted“ wird (er kommt aus dem Verzeichnis nicht heraus, um zum Beispiel andere Benutzerverzeichnisse anzusehen)

Die Passwörter werden in der Regel nach dem bestmöglichsten Verschlüsselungsalgorithmus verschlüsselt:
Der Reihe nach wird versucht: Blowfish, MD5, multiple DES, simple DES.

Was tun, wenn ich ein Passwort vergessen habe?
Mit dem Programm 'pure-pw' lassen sich auch einfach neue Passwörter setzen:
PHP:
1
server ~ # pure-pw passwd helmut
Dann wird das Passwort wieder zweimal eingegeben.
Datenbank updaten nicht vergessen!:
PHP:
1
server ~ # pure-pw mkdb
Unsere Einstellungen testen:

Zuerst muss der FTP Server gestartet werden:
PHP:
1
server ~ # /usr/sbin/pure-ftpd -S 127.0.0.1,21 -c 30 -C 1 -l puredb:/etc/pureftpd.pdb -x -E -j -R
(Falls der FTP im Hintergrund laufen soll (als Daemon) einfach den Schalter '-B' hinzufügen.)
Abgebrochen wird mit [Strg]+C.

Wozu sind die vielen Parameter gut?
[*] -S 127.0.0.1,21: Der FTP Server wird an die lokale Adresse gebunden. Als Port wird der Standardport verwendet.
[*] -c 30: 30 Verbindungen zum FTP Server sind erlaubt
[*] -C 1: aber nur jeweils eine Verbindung pro IP Adresse
[*] -l puredb:/etc/pureftpd.pdb: Gibt an, dass als Datenbank das PureDB file '/etc/pureftpd.pdb' verwendet werden soll.
[*] -E: Es sind keine anonymen Logins erlaubt.
[*] -j: Wenn beim Benutzer ein Heimverzeichnis angegeben wird, das (noch) nicht existiert, wird dieses beim ersten Login des Benutzers automatisch angelegt.
[*] -R: Die Verwendung vom CHMOD Befehl wird unterbunden.


In einer anderen Konsole (oder einem anderen Terminal) loggen wir uns als 'helmut' auf dem FTP Server ein.
+ PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
tom@server ~ $ ftp localhost 21
Connected to localhost (127.0.0.1).
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 1 of 30 allowed.
220-Local time is now 17:32. Server port: 21.
220-This is a private system - No anonymous login
220 You will be disconnected after 15 minutes of inactivity.
Name (localhost:tom): [b]helmut[/b]
500 This security scheme is not implemented
SSL not available
331 User helmut OK. Password required
Password: [b]passwort[/b]
230-User helmut has group access to:  409     
230-OK. Current directory is /
230 0 Kbytes used (0%) - authorized: 10240 Kb
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> [b]ls -la[/b]
200 PORT command successful
150 Connecting to port 52082
drwxr-xr-x    2 1002     409          4096 Mar 12 16:32 .
drwxr-xr-x    2 1002     409          4096 Mar 12 16:32 ..
-rw-------    1 1002     409             0 Mar 12 16:32 .ftpquota
226-Options: -a -l 
226 3 matches total
ftp> [b]bye[/b]
221-Goodbye. You uploaded 0 and downloaded 0 kbytes.
221 Logout.
ncftp Benutzer können sich so einloggen:
PHP:
1
tom@server ~ $ ncftp -u helmut -p test localhost 21
Die Befehle die ich während der FTP Sitzung eingegeben habe, habe ich fett hervorgehebt.

Für Interessierte empfehle ich auch einen Blick in die Manpage von pure-ftpd:
PHP:
1
2
3
tom@server ~ $ man pure-pw
tom@server ~ $ man pure-ftpd
...
Für Fragen (die nicht unbedingt etwas mit Linuxgrundkenntnissen zu tun haben) stehe ich gerne zur Verfügung.
Gerne nehme ich auch Anreize, Kritik, Verbesserungsvorschläge und Ähnliches entgegen.

--
Das Tutorial ist auch als PDF verfügbar: http://insanityonstage.in.funpic.de/Cybton-Tutorial-PureFTPd-Linux.pdf

Zuletzt bearbeitet am 22. Dezember 2007 (Link zur PDF Version aktualisiert, PDF Version neu erstellt, da alte Version auf Rootserver gelöscht wurde).

Dieses Tutorial wurde von tom am 12.03.2006 verfasst.

Kommentare

Es sind noch keine Kommentare vorhanden
nach obennach oben

Copyright © 2008 cybton-network

Google
Partner: #Musik - Dein Internetradio - nexem. - .wir machen news - Your-Book.net - Dein kostenloses Gästebuch
ANEXIA - PHP Entwicklung - Dockers - s.Oliver Schuhe - Think Schuhe - der eigene Weg - Dorfen - Paul Green Schuhe - Bequeme Geox - Web-Entwicklung