OSETC TECH

CentOS 7 /RHEL 7: How To Install And Configure FTP Server (vsftpd)

Normally you can download or upload files to FTP Server and you cthe defalut FTP package used is vsftpd,  it is a very secure file transfer protocol under CentOS 7 or RHEL 7 linux system.  How to install vsftpd package on centos 7 system? How do I install and configure FTP server or Vsftp service? in this article, you will see how to install, configure and setup FTP server on CentOS 7 or RHEL 7 linux system.

From wikipedia:

The File Transfer Protocol (FTP) is a standard network protocol used to transfer computer files from one host to another host over a TCP-based network, such as the Internet.

​Actually FTP is still not a very secure protocol and still has many security weaknesses., if it is possible, you can setup it with SSL/TLS connection or use SFTP (Secure FTP), it is a more secure protocol and use the Secure shell protocol to transfer files.

From Wikipedia:

The SSH file transfer protocol or secure FTP (SFTP), also transfers files and has a similar command set for users, but is built on different software technology. SFTP uses the Secure Shell protocol (SSH) to transfer files. Unlike FTP, it encrypts both commands and data, preventing passwords and sensitive information from being transmitted openly over the network. It cannot interoperate with FTP software.

CentOS 7 /RHEL 7 Install Vsftpd 

Issue the following yum command to install the vsftpd package to setup ftp server on centos 7 system, type:

yum install vsftpd

Outputs:

[root@osetc Desktop]# yum install vsftpd

Loaded plugins: fastestmirror, langpacks

base                                                     | 3.6 kB     00:00

extras                                                   | 3.4 kB     00:00

updates                                                  | 3.4 kB     00:00

updates/7/x86_64/primary_db                                | 4.8 MB   00:04

Loading mirror speeds from cached hostfile

* base: mirrors.btte.net

* extras: mirrors.btte.net

* updates: mirrors.nwsuaf.edu.cn

Resolving Dependencies

--> Running transaction check

---> Package vsftpd.x86_64 0:3.0.2-9.el7 will be installed

--> Finished Dependency Resolution

Dependencies Resolved

================================================================================

Package          Arch             Version                 Repository      Size

================================================================================

Installing:

vsftpd           x86_64           3.0.2-9.el7             base           165 k

Transaction Summary

================================================================================

Install  1 Package

Total download size: 165 k

Installed size: 343 k

Is this ok [y/d/N]: y

Downloading packages:

vsftpd-3.0.2-9.el7.x86_64.rpm                              | 165 kB   00:00

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

Installing : vsftpd-3.0.2-9.el7.x86_64                                    1/1

Verifying  : vsftpd-3.0.2-9.el7.x86_64                                    1/1

Installed:

vsftpd.x86_64 0:3.0.2-9.el7

Complete!

Before edit the configuration file” vsftpd.conf“, you’d better backup it, type:

cp /etc/vsftpd/vsftpd.conf  /etc/vsftpd/vsftpd.conf.bak

CentOS 7 /RHEL 7 Configure Vsftpd FTP Server 

After installed vsftpd package, now we can start to edit vsftpd configuration file, using “vim” command to edit “/etc/vsftpd/vsftpd.conf” and find the following lines and make the changes as below :

anonymous_enable=NO     #==> line 12:  To disable anonymous access

local_enable=YES                #==>enable local user access

write_enable=YES                #==>enable write permission for ftp user

chroot_local_user=YES        #==> line 100, 101: uncomment ( enable chroot )

chroot_list_enable=YES

ascii_upload_enable=YES    #==>uncomment ( allow ascii mode )ascii_download_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list  #==>uncomment ( specify chroot list )

listen=YES

listen_ipv6=NO

If you want to learn more information about “vsftpd.conf”, you can have a look manual page of “vsftpd.conf”, just type “man vsftpd.conf” command.

Then save above configuration file and restart the vsftpd service using the following command:

sudo systemctl restart vsftpd.service

outputs:

[root@osetc Desktop]# systemctl restart vsftpd.service

[root@osetc Desktop]# systemctl status vsftpd.service

vsftpd.service - Vsftpd ftp daemon

Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled)

Active: active (running) since Fri 2014-12-05 09:08:53 EST; 11s ago

Process: 14095 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)

Main PID: 14096 (vsftpd)

CGroup: /system.slice/vsftpd.service

└─14096 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Dec 05 09:08:53 itsprite systemd[1]: Starting Vsftpd ftp daemon...

Dec 05 09:08:53 itsprite systemd[1]: Started Vsftpd ftp daemon.

Set vsftpd service to start while system startup, type:

sudo systemctl enable vsftpd.service

CentOS 7 /RHEL 7 Add A FTP Users

As disallowing anonymous user to login the ftp server in above configuration so you’d better create a new ftp user, As root user is not allowed to login the ftp server by default. using the following command to create a user and set use password. create a ftp user named “ftpuser”, type:

useradd ftpuser
passwd ftpuser

Outputs:

[root@osetc Desktop]# useradd ftpuser

[root@osetc Desktop]# passwd ftpuser

Changing password for user ftpuser.

New password:

BAD PASSWORD: The password is a palindrome

Retype new password:

passwd: all authentication tokens updated successfully.

CentOS 7 /RHEL 7 Configure Firewall For vsftpd 

If you want to connect to the Vsftp FTP server remotely, you must allow the default FTP port 21 through firewall, type the following command:

firewall-cmd --permanent --add-port=21/tcp

or

firewall-cmd --permanent --zone=public --add-service=ftp

then reload the firewall service, type:

firewall-cmd --reload

CentOS 7 /RHEL 7 Install FTP Client

If you want to login the ftp server, you should install a ftp client , issue the following command:

yum install ftp

Outputs:

[root@osetc Desktop]# yum install ftp

Loaded plugins: fastestmirror, langpacks

Loading mirror speeds from cached hostfile

* base: mirrors.btte.net

* extras: mirrors.btte.net

* updates: mirrors.nwsuaf.edu.cn

Resolving Dependencies

--> Running transaction check

---> Package ftp.x86_64 0:0.17-66.el7 will be installed

--> Finished Dependency Resolution

Dependencies Resolved

================================================================================

Package        Arch              Version                 Repository       Size

================================================================================

Installing:

ftp            x86_64            0.17-66.el7             base             61 k

Transaction Summary

================================================================================

Install  1 Package

Total download size: 61 k

Installed size: 96 k

Is this ok [y/d/N]: y

Downloading packages:

ftp-0.17-66.el7.x86_64.rpm                                 |  61 kB   00:00

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

Installing : ftp-0.17-66.el7.x86_64                                       1/1

Verifying  : ftp-0.17-66.el7.x86_64                                       1/1

Installed:

ftp.x86_64 0:0.17-66.el7

Complete!

Or you can use other third part software, such as: filezilla.

CentOS 7 /RHEL 7 Test FTP Server

After installed and configured vsftpd ftp server, the next step is to verify that if the ftp server can work normally.  let’s have a test to login the ftp server using ftp user in command interface line, type:

ftp 127.0.0.1

Output:

[root@osetc Desktop]# ftp 127.0.0.1

Connected to 127.0.0.1 (127.0.0.1).

220 (vsFTPd 3.0.2)

Name (127.0.0.1:root): ftpuser

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>

done……