ProFTPD source code
C Shell PHP M4 Perl Makefile Other
Latest commit 90d751e Jan 22, 2017 @Castaglia Castaglia committed on GitHub Merge pull request #398 from proftpd/str-text-to-array
Add new String API for converting delimited text to array
Failed to load latest commit information.
.github Adding a template for GitHub issues. May 6, 2016
contrib Update mod_sftp to use the new pr_str_text_to_array() function. Jan 22, 2017
doc Fill in the docs for the RedisTimeouts directive. Jan 14, 2017
include Adding a new pr_str_text_to_array() function, for refactoring code wh… Jan 22, 2017
lib Provide a JSON API which uses pools, and which wraps/hides the CCAN J… Jan 16, 2017
locale Rename the include/mod_log.h header file to include/logfmt.h, to more… Jan 18, 2017
m4 Start tweaking the configure script to work better in cross-compiling Nov 1, 2011
modules Rename the include/mod_log.h header file to include/logfmt.h, to more… Jan 18, 2017
sample-configurations Update the release notes to mention that the IdentLookups directive is Feb 10, 2009
src Adding a new pr_str_text_to_array() function, for refactoring code wh… Jan 22, 2017
tests Adding a new pr_str_text_to_array() function, for refactoring code wh… Jan 22, 2017
utils Remove the Id keyword from the files; this keyword is a vestige of th… Jun 27, 2016
.autom4te.cfg Bug#2549 - Allow contrib modules to be built from multiple source files. Jan 1, 2005
.gitattributes Add manual overrides, to stop mis-representing the language used for … Aug 16, 2015
.gitignore Add a file letting users know how to contribute to the ProFTPD Project. May 6, 2016
.travis.yml Merge branch 'master' into redis Jan 16, 2017
COPYING Updating FSF address, per Bug#3650. May 23, 2011
CREDITS Doc updates/tweaks. Dec 1, 2015
ChangeLog Updated ChangeLog. Mar 11, 2016
INSTALL Typos. Jan 16, 2009 Merge branch 'master' into redis Jan 16, 2017 I think my lost of test coverage results come from the cleaning of the Apr 26, 2016
NEWS Updating NEWS, release notes for regression. Jan 15, 2017
README.AIX Updating the AIX notes with remarks about gcc versions which do and d… May 24, 2006
README.DSO Mention the DSO howto. Feb 28, 2005
README.FreeBSD Bug#2250 - Add ports, compiling info to FreeBSD README. Jun 5, 2005
README.IPv6 Updated the IPv6 README. Jan 21, 2008
README.LDAP git 9d4234fbd69: prevent segfault when no user filters are specified Dec 18, 2011
README.PAM Update the PAM readme with notes for Linux, per Bug#2907. May 23, 2007
README.Solaris2.5x Use "ProFTPD", not "ProFTP". Jun 1, 2005
README.Unixware Unixware support and updated config.guess, config.sub files Feb 28, 2000
README.capabilities OS-neutrality Jan 9, 2003
README.classes Getting the restored SourceForge devel CVS repository back up to sync, May 15, 2006
README.controls Make notes about how Controls are affected by ServerType. Mar 16, 2006
README.cygwin Adding note to Cygwin README to use Cygwin 1.3.22 or later, in order to May 29, 2003
README.facl Remove extraneous whitespace. Aug 9, 2007 Point to a badge for 1.3.5d now. Jan 16, 2017
README.modules Adding the mod_log_forensic module to the source distribution. Jan 25, 2013
README.ports Adding FreeBSD 4.9-PRERELEASE to the list. Apparently the source works Aug 28, 2003
RELEASE_NOTES Mentioning the Redis support, JSON API in the release notes; more to … Jan 16, 2017
acconfig.h Remove HAVE_TIMER_T macro and timer_t detection mechanism Oct 9, 2015
aclocal.m4 Re-create our aclocal.m4 using the aclocal tool. Nov 18, 2009
config.guess Updating the config.{guess,sub} files. May 25, 2012 Issue #354: Redis support, initial implementation done. Jan 13, 2017
config.sub Updating the config.{guess,sub} files. May 25, 2012
configure Issue #354: Redis support, initial implementation done. Jan 13, 2017 Issue #354: Redis support, initial implementation done. Jan 13, 2017
install-sh Updated the install-sh script. Nov 17, 2009 Bug#3331 - Update bundled libtool to 2.2.4. Nov 17, 2009 Added in support. Aug 2, 2000



Build Status Coverage Status Coverity Scan Status Release License


ProFTPD is a highly configurable FTP daemon for Unix and Unix-like operating systems. See the README.ports file for more details about the platforms on which ProFTPD in known or thought to build and run.

ProFTPD grew from a desire for a secure and configurable FTP server. It was inspired by a significant admiration of the Apache web server. Unlike most other Unix FTP servers, it has not been derived from the old BSD ftpd code base, but is a completely new design and implementation.

ProFTPD's extensive configurability provides systems administrators great flexibility in user authentication and access controls, including virtual users and easy chroot() FTP sessions for individual users.

ProFTPD is popular with many service providers for delivering update access to user web pages, without resorting to Unix shell accounts.

Latest Release

see RELEASE_NOTES for an overview of the changes in this release.

Major Features

  • A single main configuration file, with directives and directive groups patterned after those of the Apache web server.

  • Per directory ".ftpaccess" configuration similar to Apache's ".htaccess".

  • Designed to run either as a stand-alone server or from inetd/xinetd.

  • Multiple virtual FTP servers and anonymous FTP services.

  • Multiple password files.

  • Shadow password support, including support for expired accounts.

  • Multiple authentication methods, including PAM, LDAP, SQL, and RADIUS.

  • Virtual users.

  • ProFTPD never executes any external program at any time. There is no SITE EXEC command, and all file and directory listings are generated internally, without using an external ls command.

  • Anonymous FTP and other chroot directories do not require any specific directory structure, executable programs or other system files.

  • Modular architecture with an API that facilitates well structured extensions to meet user needs.

  • Visibility of directories or files controlled based on Unix style permissions or user/group ownership.

  • Logging and utmp/wtmp support. Logging is compatible with wu-ftpd, and extended, customizable logging is available.

  • If supported by the capabilities the host system, it can run as a non-privileged user in stand-alone mode, thwarting attacks aimed at exploiting "root" privileges.

  • GPLv2 source license. The source code is available to audit.


Installation Overview

For detailed installation instructions, see the INSTALL file in the root directory of the source distribution.

The ProFTPD source distribution is designed to be configured using the GNU autotools, so compiling and installing follows the familiar command sequence of

$ ./configure
$ make
$ make install

However, a significant portion of ProFTPD's configurability is done at compile time, so it is highly recommended that you read INSTALL and all of the README.* files that pertain to your platform and desired features before building the sources.

ProFTPD uses a single configuration file. A few examples are included in the sample-configurations/ subdirectory of the source distribution.

On most systems, the inetd or xinetd configuration must be changed, either to remove the current ftpd entry to run ProFTPD standalone, or to change the current ftpd entry to use the proftpd daemon.


If you have questions, please ask them on the appropriate mailing lists.

If you don't understand the documentation, please tell us, so we can explain it better. The general idea is: if you need to ask for help, then something needs to be fixed so you (and others) don't need to ask for help. Asking questions helps us to know what needs to be documented, described, and/or fixed.