How to Install FTP Server on CentOS 8

 Install FTP Server on CentOS 8

In this article, we will have explained the necessary steps to install and configure FTP Server on CentOS 8. Before continuing with this tutorial, make sure you are logged in as a user with sudo privileges. All the commands in this tutorial should be run as a non-root user.

FTP (File Transfer Protocol) is a traditional and widely used standard tool for transferring files between a server and clients over a network, especially where no authentication is necessary (permits anonymous users to connect to a server). We must understand that FTP is insecure by default because it transmits user credentials and data without encryption.

Install FTP Server on CentOS 8

Step 1. The first command will update the package lists to ensure you get the latest version and dependencies.

sudo dnf install epel-release
sudo dnf update

Step 2. Install FTP Server on the CentOS system.

Now, install vsftpd with the following command:

sudo dnf install vsftpd

Once the package is installed, start the vsftpd daemon and enable it to start at boot time automatically:

sudo systemctl start vsftpd
sudo systemctl enable vsftpd
sudo systemctl status vsftpd

Step 3. Configuring FTP Server.

The configuration file will be in /etc/vsftp the folder. Vsftpd.conf is the configuration file of the FTP server:

sudo nano /etc/vsftpd/vsftpd.conf

Set the following options with these corresponding values:

anonymous_enable=NO             # disable  anonymous login
local_enable=YES		# permit local logins
write_enable=YES		# enable FTP commands which change the filesystem
local_umask=022		        # value of umask for file creation for local users
dirmessage_enable=YES	        # enable showing of messages when users first enter a new directory
xferlog_enable=YES		# a log file will be maintained detailing uploads and downloads
connect_from_port_20=YES        # use port 20 (ftp-data) on the server machine for PORT style connections
xferlog_std_format=YES          # keep standard log file format
listen=NO   			# prevent vsftpd from running in standalone mode
listen_ipv6=YES		        # vsftpd will listen on an IPv6 socket instead of an IPv4 one
pam_service_name=vsftpd         # name of the PAM service vsftpd will use
userlist_enable=YES  	        # enable vsftpd to load a list of usernames
tcp_wrappers=YES  		# turn on tcp wrappers

Step 4. Configure Firewall.

If you are running a firewall, you need to allow these salient ports 21 (FTP command port), port 20 (FTP data port) and 30000-31000 (Passive ports range):

sudo firewall-cmd --permanent --add-port=20-21/tcp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload

Step 5. Create an FTP user and its directory

We will create a user that we will use to access the FTP server:

sudo adduser ftpuser
sudo passwd ftpuser

Next, we will proceed and create the FTP directory and assign the following permissions and directory ownership:

sudo mkdir -p /home/ftpuser/ftp_dir
sudo chmod -R 750 /home/ftpuser/ftp_dir
sudo chown -R ftpuser: /home/ftpuser/ftp_dir

Step 6. Test your vsftpd or FTP server.

Your FTP server is fully functional, and you should be able to connect to your server with any FTP client that can be configured to use TLS encryption such as FileZilla.

That’s all you need to do to install FTP Server on CentOS 8. I hope you find this quick tip helpful. For further reading on FTP Server, please refer to their official knowledge base. If you have questions or suggestions, feel free to leave a comment below.