Proftpd Mail Server :: Mini How To
Proftpd
Highly configurable GPL-licensed FTP server software
Install
1.3.3c [29/Oct/2010]
# wget -c ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.3c.tar.bz2 # tar jxvf proftpd-1.3.3c.tar.bz2 # cd proftpd-1.3.3c # ./configure # make # make install
Config
/usr/local/etc/proftpd.conf
ServerName "ProFTPD Default Installation" ServerType standalone DefaultServer on Port 21 UseIPv6 off Umask 022 MaxInstances 30 User nobody Group nogroup AllowOverwrite on <Limit SITE_CHMOD> DenyAll </Limit> <Anonymous ~ftp> User ftp Group ftp UserAlias anonymous ftp MaxClients 10 DisplayLogin welcome.msg DisplayChdir .message <Limit WRITE> DenyAll </Limit> </Anonymous>
To verify that our configuration file is valid, we simple run:
proftpd -t
for example in my archlinux box:
# proftpd -t Checking syntax of configuration file - Fatal: Group: Unknown group 'nogroup' on line 30 of '/usr/local/etc/proftpd.conf'
so i should fix it:
# sed -r -i 's/(nobody|nogroup)/ftp/' /usr/local/etc/proftpd.conf
# proftpd -t Checking syntax of configuration file Syntax check complete.
Run
Simple we just run (you must be root) :
# proftpd
ps -ef | grep pro[f]tpd
or even better:
pgrep proftpd
Debug
Before you start your proftpd installation, you should first debug proftpd to catch common errors:
# proftpd -n -d 1
Check your modules:
# proftpd -l
View all your settings:
eg. (in my linux box):
# proftpd -V Compile-time Settings: Version: 1.3.2a (maint) Platform: LINUX Built: Τρι 08 Σεπ 2009 09:17:10 μμ EEST Built With: configure CFLAGS: -O2 -Wall LDFLAGS: -L$(top_srcdir)/lib LIBS: -lcap -lpam -lsupp -lcrypt Files: Configuration File: /usr/local/etc/proftpd.conf Pid File: /usr/local/var/proftpd.pid Scoreboard File: /usr/local/var/proftpd/proftpd.scoreboard Features: – Autoshadow support – Controls support + curses support – Developer support – DSO support + IPv6 support + Largefile support – Lastlog support + ncurses support – NLS support – OpenSSL support – POSIX ACL support + Shadow file support + Sendfile support + Trace support Tunable Options: PR_TUNABLE_BUFFER_SIZE = 1024 PR_TUNABLE_GLOBBING_MAX = 8 PR_TUNABLE_HASH_TABLE_SIZE = 40 PR_TUNABLE_NEW_POOL_SIZE = 512 PR_TUNABLE_SCOREBOARD_BUFFER_SIZE = 80 PR_TUNABLE_SCOREBOARD_SCRUB_TIMER = 30 PR_TUNABLE_SELECT_TIMEOUT = 30 PR_TUNABLE_TIMEOUTIDENT = 10 PR_TUNABLE_TIMEOUTIDLE = 600 PR_TUNABLE_TIMEOUTLINGER = 30 PR_TUNABLE_TIMEOUTLOGIN = 300 PR_TUNABLE_TIMEOUTNOXFER = 300 PR_TUNABLE_TIMEOUTSTALLED = 3600 PR_TUNABLE_XFER_SCOREBOARD_UPDATES = 10
Verify
> ftp localhost Connected to localhost. 220 ProFTPD 1.3.1 Server (ProFTPD Default Installation) [127.0.0.1] Name (localhost:ebal): anonymous 331 Anonymous login ok, send your complete email address as your password Password: 230 Anonymous access granted, restrictions apply Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 PORT command successful 150 Opening ASCII mode data connection for file list drwxr-xr-x 37 nobody nogroup 4096 Oct 11 13:08 pdf drwxr-xr-x 5 nobody nogroup 4096 Oct 7 14:44 mp3 226 Transfer complete ftp>
Virtual Users
O proftpd ftp server έχει την δυνατότητα να υποστηρίζει virtual users. Αυτό μας δίνει την δυνατότητα για 2 πράγματα:
- Όταν έχουμε πραγματοποιήσει εγκατάσταση σε ένα chroot περιβάλλον
- Όταν θέλουμε να υποστηρίζουμε πολλαπλά virtual host και πολλαπλούς χρήστες χωρίς να χρειάζεται να "πειράζουμε" το σύστημά μας.
Η προσθήκη χρηστών είναι εξαιρετικά εύκολη και απλή, απλά χρειάζεται να δημιουργήσουμε με το πρόγραμμα ftpasswd,
που βρίσκεται εντός του λογισμικού μας, ένα παρόμοιο αρχείο με το /etc/passwd.
Παράδειγμα χρήσης:
ftpasswd --passwd --name ftpuser --home=/tmp/ --shell=/bin/bash --uid=10001
Θα μας ζητήσει να δώσουμε το συνθηματικό του χρήστη και θα παράγει ένα αρχείο: ftpd.passwd
Τώρα το μόνο που μένει είναι να δηλώσουμε στο αρχείο ρυθμίσεων του proftpd μας το αρχείο με την ακριβή του διαδρομή.
Με λίγα λόγια προσθέτουμε μία γραμμή στο proftpd.conf ως εξής:
AuthUserFile /usr/local/etc/ftpd.passwd
Και επανεκκινούμε τον proftpd