Installing ProFTPD Server on RHEL/CentOS 8/7

ProFTPD is an Open Source FTP Server and one of the most used, secure, and reliable file transfer daemons on Unix environments, due to its file configurations simplicity speed, and easy setup.

Install Proftpd In CentOS 7
Install Proftpd In RHEL/CentOS 7

Requirements

This tutorial will guide you on how you can install and use ProFTPD Server on CentOS/RHEL 8/7 Linux distributions for a simple file transfer from your local system accounts to remote systems.

Step 1: Install Proftpd Server

1. Official RHEL/CentOS 8/7 repositories doesn’t provide any binary package for ProFTPD Server, so you need to add extra package repositories on your system provided by EPEL Repo, using the following command.

# yum install epel-release
Install EPEL in CentOS 7
Install EPEL in RHEL/CentOS 7

2. Before you start installing ProFTPD Server, edit your machine hosts file, change it accordingly to your system FQDN and test the configurations to reflect your system domain naming.

# nano /etc/hosts

Here add your system FQDN on 127.0.0.1 localhost line like in the following example.

127.0.0.1 server.centos.lan localhost localhost.localdomain

Then edit /etc/hostname file to match the same system FQDN entry like in the screenshots below.

# nano /etc/hostname
Open Hostname File
Open Hostname File
Add Hostname in Hosts
Add Hostname in Hosts

3. After you have edited the host files, test your local DNS resolution using the following commands.

# hostname
# hostname -f    	## For FQDN
# hostname -s    	## For short name
How to Check Hostname in CentOS
Verify System Hostname

4. Now it’s time to install ProFTPD Server on your system and some required ftp utilities that we will be using later by issuing following command.

# yum install proftpd proftpd-utils
Install FTP in CentOS
Install Proftpd Server

5. After the server is installed, start and manage Proftpd daemon by issuing the following commands.

# systemctl start proftpd
# systemctl status proftpd
# systemctl stop proftpd
# systemctl restart proftpd
Start Proftpd Server
Start Proftpd Server

Step 2: Add Firewall Rules and Access Files

6. Now, your ProDTPD Server runs and listen for connections, but it’s not available for outside connections due to Firewall policy. To enable outside connections make sure you add a rule which opens port 21, using firewall-cmd system utility.

# firewall-cmd –add-service=ftp   ## On fly rule
# firewall-cmd –add-service=ftp   --permanent   ## Permanent rule
# systemctl restart firewalld.service 
Open FTP Port in CentOS
Open Proftp Port in Firewall

7. The most simple way to access your FTP server from remote machines is by using a browser, redirecting to your server IP Address or domain name using ftp protocol on URL.

ftp://domain.tld

OR 

ftp://ipaddress 

8. The default configuration on Proftpd Server uses valid system local accounts credentials to login and access your account files which is your $HOME system path account, defined in /etc/passwd file.

Access Proftpd from Browser
Access Proftpd from Browser
Index of Proftpd Files
Index of Proftpd Files

9. To make ProFTPD Server automatically run after system reboot, aka enable it system-wide, issue the following command.

# systemctl enable proftpd

That’s it! Now you can access and manage your account files and folders using FTP protocol using whether a browser or other more advanced programs, such as FileZilla, which is available on almost any platforms, or WinSCP, an excellent File Transfer program that runs on Windows based systems.

Suggested Read: How to Install, Configure and Secure FTP Server in CentOS 7

On the next series of tutorials concerning ProFTPD Server on RHEL/CentOS 8/7, I shall discuss more advanced features like enabling Anonymous account, use TLS encrypted file transfers and adding Virtual Users.

Hey TecMint readers,

Exciting news! Every month, our top blog commenters will have the chance to win fantastic rewards, like free Linux eBooks such as RHCE, RHCSA, LFCS, Learn Linux, and Awk, each worth $20!

Learn more about the contest and stand a chance to win by sharing your thoughts below!

Matei Cezar
I'am a computer addicted guy, a fan of open source and linux based system software, have about 4 years experience with Linux distributions desktop, servers and bash scripting.

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

12 Comments

Leave a Reply
  1. Hi,

    I wanted to add configuration settings that proftpd authenticates using openLDAP and creates a chroot directory for each user, can any one direct me in this regards. You help would be much appreciated.

    Thanks,
    Sai

    Reply
    • Create user with home directory in /var/www system path by issuing the below command:

      # useradd -md /var/www your_user
      

      Or setup /var/www for already existing users with the same home as above with:

      # usermoad -d /var/www your_user
      
      Reply
  2. Hi,
    after rebooting I have:

    proftpd.service never wrote its PID file. Failing.

    It seems that the dir /var/run/proftpd is destroyed at rebooting!

    Ho can I solve this?

    Reply
  3. Hi Matei,

    Thanks for such a short and easy tutorial on installation of ProFTPd. I like it and try it out on my CentOS7 for sure.

    However, I suggest two minor editing points in the tutorial writeup:
    1. In Point 3, I think there is a misplaced space character between ‘-‘ and ‘s’ in a command-
    # hostname – s ## For short name
    Please remove this space character, if it is not intended.
    2. In Point 6, the parameter in the last command has different names as in code block and screenshot.
    Please make the command consistent across the two illustrations.

    Again thanks for keeping Linux community encouraged and engaged.

    Reply
  4. Hi,

    I would like to make two remarks:
    – with RHEL 7/CentOS 7, there is a new command called “hostnamectl” to rename a host: hostnamectl set-hostname myhostname
    – use “firewall-cmd –reload” instead of “systemctl restart firewalld”, you will avoid stopping all your current connections which is one of the advantages of the new firewalld component.

    Regards.

    Reply

Got Something to Say? Join the Discussion...

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.