How to use FTP servers in Ubuntu
Published: 2022-11-27 17:42:01

---
title: How to use FTP servers in Ubuntu
published: true
date: 2022-10-11 08:01:18 UTC
tags: 
canonical_url: https://ashwintelmore.hashnode.dev/how-to-use-ftp-servers-in-ubuntu
---

In This blog we will see how to install and configure an FTP server on Ubuntu 20.04 that you use to share files between your devices.

FTP stand for File Transfer Protocol which is a standard network protocol used to transfer files to and from a remote system. We will be installing vsftpd which stand for Very Secure Ftp Daemon, a stable, secure, and fast FTP server.

FTP is a very popular protocol, for more secure and faster data transfers

**Installing vsftpd on Ubuntu 20.04**

The vsftpd package is available in the Ubuntu repositories. To install it, run the following commands:

```
sudo apt update


sudo apt install vsftpd

```

The ftp service will automatically start once the installation process is complete. To verify it, print the service status:

```
sudo systemctl status vsftpd

```

The output should show that the vsftpd service is active and running:

```
 vsftpd.service - vsftpd FTP server
     Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-03-02 15:17:22 UTC; 3s ago
      .
      .
      .

```

Configuring vsftpd The vsftpd server configuration is stored in the `/etc/vsftpd.conf` file.

For more visit the [vsftpd documentation page](http://vsftpd.beasts.org/vsftpd_conf.html).

In the following sections, we will go over some important settings needed to configure a secure vsftpd installation.

Start by opening the vsftpd configuration file:

```
sudo vi /etc/vsftpd.conf

```

Paste these properties at last

```
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

```

Save the file and restart the vsftpd service for changes to take effect:

```
sudo systemctl restart vsftpd

```

Opening the Firewall If you are running a UFW firewall , youll need to allow FTP traffic.

To open port 21 (FTP command port), port 20 (FTP data port), and 30000-31000 (Passive ports range), run the following commands:

```
sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp

```

To avoid being locked out, make sure port 22 is open:

```
sudo ufw allow OpenSSH

```

Reload the UFW rules by disabling and re-enabling UFW:

```
sudo ufw disable
sudo ufw enable

```

To verify the changes run:

```
sudo ufw status

```

Output look like

```
Status: active
To Action From
-- ------ ----
20:21/tcp ALLOW Anywhere
30000:31000/tcp ALLOW Anywhere
OpenSSH ALLOW Anywhere
20:21/tcp (v6) ALLOW Anywhere (v6)
30000:31000/tcp (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)

```

**Creating FTP User**

To test the FTP server, we will create a new user. Create a new user named `newuser`:

```
sudo adduser newuser

```

Add the user to the allowed FTP users list:

```
echo "newuser" | sudo tee -a /etc/vsftpd.user_list

```

Create the FTP directory tree and set the correct permissions:

```
sudo mkdir -p /home/newuser/ftp

```

Give the require permission to the newuser.

```
sudo chmod 777 /home/newuser/ftp


sudo chown -R newuser: /home/newuser/ftp

```

**Test your configuration** Perform the following step in another windows/Linux system to test out

step 1: open Command line interface of your respective system and run this following command with replacing the `ip_address` of remote system

```
ftp ip_address

```

Enter the user name which you newly created with password and you will see the following output

```
C:\Users\window>ftp 192.168.29.128 
Connected to 192.168.29.128. 
220 (vsFTPd 3.0.3) 
200 Always in UTF8 mode. User (192.168.29.128:(none)): newuser
331 Please specify the password.
Password: 
230 Login successful.
ftp>

```

Done!😎

Read the next blog to upload and download the file through the ftp