How to install an FTP Server on Ubuntu 22.04 using VSFTPD

To install an FTP Server on Ubuntu 22.04 using VSFTPD

Introduction

FTP (File Transfer Protocol) is a standardized network protocol employed for transferring files between hosts over a TCP-based network, such as the Internet. It operates by establishing two connections that link the communicating computers. FTP facilitates the downloading, uploading, and transfer of files between locations on the internet and across computer systems.

Procedure

Step 1 : Check the OS version of the system

root@linuxhelp:~# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.3 LTS
Release:	22.04
Codename:	jammy

Step 2: Check for update and install

root@linuxhelp:~# sudo apt update
Get:1 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB]    
Hit:2 http://in.archive.ubuntu.com/ubuntu jammy InRelease                          
Get:3 http://in.archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB]         
Get:4 http://security.ubuntu.com/ubuntu jammy-security/main i386 Packages [513 kB]
Get:5 http://in.archive.ubuntu.com/ubuntu jammy-backports InRelease [127 kB]
Get:6 http://in.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [1,888 kB]
Fetched 14.7 MB in 6s (2,379 kB/s)                                                                                                                    
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
339 packages can be upgraded. Run 'apt list --upgradable' to see them.

Step 3: Insatll vsftpd package using the below command

root@linuxhelp:~# sudo apt install vsftpd
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed: 
Get:1 http://in.archive.ubuntu.com/ubuntu jammy/main amd64 vsftpd amd64 3.0.5-0ubuntu1 [123 kB]
Fetched 123 kB in 1s (88.2 kB/s) 
Preconfiguring packages ...
Selecting previously unselected package vsftpd.
(Reading database ... 203969 files and directories currently installed.)
Preparing to unpack .../vsftpd_3.0.5-0ubuntu1_amd64.deb ...
Unpacking vsftpd (3.0.5-0ubuntu1) ...
Setting up vsftpd (3.0.5-0ubuntu1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /lib/systemd/system/vsftpd.service.
Processing triggers for man-db (2.10.2-1) ...

Step 4: Start the FTP server using the below command

root@linuxhelp:~# systemctl start vsftpd

Step 5: Enable FTP server using the below command

root@linuxhelp:~# systemctl enable vsftpd
Synchronizing state of vsftpd.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable vsftpd

Step 6: Allow FTP in firewall using the below command

root@linuxhelp:~# sudo ufw allow ftp
Rule added
Rule added (v6)

Step 7: Allow FTP ports in firewall using the below commands

root@linuxhelp:~# sudo ufw allow 21/tcp
Skipping adding existing rule
Skipping adding existing rule (v6)
root@linuxhelp:~# sudo ufw allow 20/tcp
Rule added
Rule added (v6)

Step 8: check whether the FTP ports are allowed in firewall using the below command

root@linuxhelp:~# sudo ufw status
Status: active
Output:
To                         Action      From
--                         ------      ----
Samba                      ALLOW       Anywhere                  
21/tcp                     ALLOW       Anywhere                  
20/tcp                     ALLOW       Anywhere                  
Samba (v6)                 ALLOW       Anywhere (v6)             
21/tcp (v6)                ALLOW       Anywhere (v6)             
20/tcp (v6)                ALLOW       Anywhere (v6)       

Step 9: Add ftpuser using the below command

root@linuxhelp:~# sudo adduser ftpserver
Adding user `ftpserver' ...
Adding new group `ftpserver' (1002) ...
Adding new user `ftpserver' (1002) with group `ftpserver' ...
Creating home directory `/home/ftpserver' ...
Copying files from `/etc/skel' ...
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: password updated successfully
Changing the user information for ftpserver
Enter the new value, or press ENTER for the default
	Full Name []: 
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] y

Step 10: Create FTP directory inside home directory of the ftpserver using the below command

root@linuxhelp:~# sudo mkdir /home/ftpserver/ftp

Step 11: Give writable permission to FTP directory using the below command

root@linuxhelp:~# sudo chmod a-w /home/ftpserver/ftp

Step 12: Create file directory inside FTP using the below command

root@linuxhelp:~# sudo mkdir /home/ftpserver/ftp/file

Step 13: Change the ownership of file directory as ftpserver user which we had created before, using the below command

root@linuxhelp:~# sudo chown ftpserver:ftpserver /home/ftpserver/ftp/file

Step 14: Create sample.txt file and insert the line “ftpserver” using the below command

root@linuxhelp:~# echo "ftpserver" | sudo tee /home/ftpserver/ftp/file/sample.txt
ftpserver

Step 15: Search for vsftpd.chroot_list inside vsftpd.conf using the below command

root@linuxhelp:~# vim /etc/vsftpd.conf 

Step 16: Edit the chroot_list and enter the ftpuser name inside vsftpd.chroot_list using the below command

root@linuxhelp:~# vim /vsftpd.chroot_list

Step 17: Restart FTP server using the below command

root@linuxhelp:~# systemctl restart vsftpd

Step 18: Check the IP address of our system using the below command

root@linuxhelp:~# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.6.133  netmask 255.255.254.0  broadcast 192.168.7.255
        inet6 fe80::ed65:e6a5:ee5d:b483  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:a5:b2:f5  txqueuelen 1000  (Ethernet)
        RX packets 12715  bytes 16285554 (16.2 MB)
        RX errors 0  dropped 34  overruns 0  frame 0
        TX packets 2394  bytes 204467 (204.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Step 19: Open the command line interface and enter the FTP credentials to connect the ftp server.

Conclusion:

We have reached the end of this article. In this guide, we have walked you through the steps required to install an FTP Server on Ubuntu 22.04 using VSFTPD. Your feedback is much welcome.

FAQ
Q
How do I transfer files using an FTP server?
A
Simply open your FTP client software, enter the FTP server's address (hostname or IP address), and log in with your username and password. Then, navigate to the directory where you want to upload or download files and use the client's GUI to transfer files.
Q
Can I set up passwords or permissions for users accessing my FTP server?
A
Yes, most FTP servers allow you to set up user accounts with unique usernames and passwords. You can also set up group permissions and permissions for specific directories or files.
Q
Is my data secure when transferring files using an FTP server?
A
Yes, if you use a secure FTP (SFTP) protocol and encrypt your connection. SFTP uses SSH to encrypt your data and provide secure authentication.
Q
How do I access an FTP server?
A
You typically access an FTP server using an FTP client software, such as FileZilla, Cyberduck, or the built-in FTP client in your operating system.
Q
What is an FTP server?
A
An FTP server is a computer that allows users to transfer files using the File Transfer Protocol (FTP).