Installation and configuration FTP server in RHEL 7

File Transfer Protocol (FTP) is a most popular way to transfer files from one machine to another machine across a network in heterogeneous environment. If you take an example of NFS (Network File system) it has an restriction to it can’t be access from other platform such as windows. FTP server does not have such a restriction it can be accessed from Linux OR windows OR OSx. Let’s see installation and configuration FTP server in RHEL 7.

  • Whenever we install vsftpd package installed then ftp user will be created
  • ftp user home directory will be set as /vat/ftp ftp’s document root path.
  • Vsftpd has been very popular because it is a very fast.
  • Lightweight FTP server and very easy to configure.


Server profile:
Packages : vsftpd
Daemon : vsftpd
Port Numbers : 20, 21
Config file path : /etc/vsftpd/vsftpd.conf


  1. It is very secure and fast
  2. Bandwidth throttling
  3. IPv6 ready
  4. Encryption support through SSL integration
  5. Virtual IP configurations
  6. Virtual users
  7. Per-user configuration
  8. Per-source-IP configuration and limits

Installation and Configuration FTP server in RHEL 7

Before going to install the vsftpd packages, ensure that the server has access to internet. If it doesn’t have, configure local YUM repository for vsftpd packages installation.

Install vsftpd yum command

[root@Tech Tutorials ~]# yum install -y vsftpd*

Edit the configuration file. /etc/vsftpd/vsftpd.conf is the main configuration file of ftp server.

[root@Tech Tutorials ~]# vi /etc/vsftpd/vsftpd.conf
#Disable anonymous user Access to secure FTP server
 Allow local users to login in vsftpd.
 Enable write access to local users.
 Uncomment the line chroot_local_user
 Enable writable chroot.


Restart and enable the vsftpd service

 [root@Tech Tutorials~]# systemctl restart vsftpd.service
[root@Tech Tutorials~] # systemctl enable vsftpd.service

Create a rule for Firewall to allow FTP ports
Now need to allow default FTP port 20 and 21 through firewall.

[root@Tech Tutorials~]# firewall-cmd --permanent --zone=public --add-port=21/tcp
[root@Tech Tutorials~]# firewall-cmd --permanent --zone=public --add-port=21/tcp
[root@Tech Tutorials~]# firewall-cmd --reload

Apply SELinux context to ftp directory. Enable write permission on home directories.

[root@Tech Tutorials~]# semanage fcontext -a -t public_content_rw_t "/var/ftp/pub(/.*)?"
[root@Tech Tutorials~]# restorecon -R /var/ftp/pub
[root@Tech Tutorials~]# setsebool -P ftpd_anon_write 1 OR on

Edit configuration file for enable upload files.

[root@Tech Tutorials~]# vim /etc/vsftpd/vsftpd.conf
 anon_upload_enable=yes #     <-- #Un-Comment this line


[root@Tech Tutorials~]# systemctl restart vsftpd
[root@Tech Tutorials~]# chown ftp /var/ftp/pub

Client Side configuration

Install ftp package through yum command

[root@Client ~]# yum install ftp

Test the ftp server and downloading files.

[root@Client ~]# ftp

ftp> ls
 ftp> cd pub
 ftp> get file1
 ftp> bye



For files uploading. Test the FTP server

[root@Client~]# ftp
 ftp> cd pub
 ftp> ls
 ftp> put file1


Installation and configuration FTP server is completed. FTP protocol is not an platform independent which support multiple platforms.

Please do comment your feedback

Thanks for your wonderful Support and Encouragement