Updated: 28 September 2026 · Applies to: Ubuntu 24.04, Debian 12, AlmaLinux 9 and Rocky Linux 9
CentOS 7 is end of life, and Pure-FTPd no longer needs to be compiled: it is packaged for Ubuntu 24.04, Debian 12, AlmaLinux 9 and Rocky Linux 9 (EPEL on AlmaLinux/Rocky).
Install
dnf install epel-release && dnf install pure-ftpd # AlmaLinux / Rocky apt install pure-ftpd # Ubuntu / Debian systemctl enable --now pure-ftpd
Virtual FTP users
Virtual users log in with their own FTP password and are mapped to a system user:
useradd -r -d /srv/ftp -s /sbin/nologin ftpuser mkdir -p /srv/ftp/alice && chown -R ftpuser: /srv/ftp pure-pw useradd alice -u ftpuser -d /srv/ftp/alice pure-pw mkdb
On Ubuntu/Debian enable the database once: ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure and restart. On AlmaLinux/Rocky uncomment PureDB /etc/pure-ftpd/pureftpd.pdb in /etc/pure-ftpd/pure-ftpd.conf.
Require TLS
Put a certificate (key and certificate in one file) at /etc/ssl/private/pure-ftpd.pem and set TLS 2 (echo 2 > /etc/pure-ftpd/conf/TLS on Ubuntu/Debian). Open port 21 and a passive range (PassivePortRange 30000 30100) in the firewall.
Note: Plain FTP sends passwords unencrypted. Prefer SFTP (see "How to Create SFTP User without Shell Access on Ubuntu 18.04 & 16.04?") when your users can use it.