Installation of ProFTPD
For security reasons, you should install ProFTPD using an unprivileged user and group.
groupadd -g 46 proftpd &&
useradd -c proftpd -d /srv/ftp -g proftpd \
-s /usr/bin/proftpdshell -u 46 proftpd &&
install -v -d -m775 -o proftpd -g proftpd /srv/ftp &&
ln -sfv /bin/false /usr/bin/proftpdshell &&
echo /usr/bin/proftpdshell >> /etc/shells
Install ProFTPD as an unprivileged
user by running the following commands:
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/run &&
The tests for this package require a very old (2001) version of the
Perl Module Test::Unit. Even when using that version of Test::Unit,
there are many failures (41/1397) although the program appears to
run well. The tests take a long time (45 minutes, not CPU
dependent) and are not recommended. To test the results anyway, add
to the configure, and
issue: make check. If
the tests are run with root privileges, more tests are run, but
there are more failures.
Now, as the
install -v -d -m775 -o proftpd -g
proftpd /srv/ftp: Create the home directory for
ln -v -s /bin/false
/usr/bin/proftpdshell: Set the default shell as a
link to an invalid shell.
echo /usr/bin/proftpdshell >>
/etc/shells: Fake a valid shell for compatibility
The above two commands can be omitted if the following directive
is placed in the configuration file:
By default, proftpd will require that users logging in have valid
shells. The RequireValidShell directive turns off this
requirement. This is only recommended if you are setting up your
FTP server exclusively for anonymous downloads.
Support for most of the dependency packages requires using
options passed to the configure script. View the
output from ./configure
--help for complete information about enabling
This is a simple, download-only sample configuration. See the
ProFTPD documentation in
/usr/share/doc/proftpd and consult
the website at http://www.proftpd.org/ for example
cat > /etc/proftpd.conf << "EOF"
# This is a basic ProFTPD configuration file
# It establishes a single server and a single anonymous login.
ServerName "ProFTPD Default Installation"
# Port 21 is the standard FTP port.
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# Set the user and group that the server normally runs at.
# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
# Normally, files should be overwritable.
# A basic anonymous configuration, no upload directories.
# Clients should be able to login with "anonymous" as well as "proftpd"
UserAlias anonymous proftpd
# Limit the maximum number of anonymous logins
# 'welcome.msg' should be displayed at login, and '.message' displayed
# in each newly chdired directory.
# Limit WRITE everywhere in the anonymous chroot
To start the proftpd daemon at boot, install
the systemd unit from the blfs-systemd-units-20150210 package by
running the following command as the
ftpcount, ftpdctl, ftpasswd, ftpmail,
ftpquota, ftpscrub, ftptop, ftpshut, ftpcount, ftpwho, and
is the FTP daemon.
shows the current number of connections.
is used to control the proftpd daemon while it is
is a Perl script designed to create and manage
AuthUserFiles and AuthGroupFiles of the correct format
is a Perl script for sending email based on the proftpd
is a Perl script designed to create and manage limits and
tally files for the mod_quotatab + mod_quotatab_file
module combination for proftpd.
provides a way to scrub the scoreboard file on demand.
shuts down all proftpd
servers at a given time.
displays running status on connections.
shows current process information for each session.
Last updated on 2014-10-26 23:42:39 +0100