How to create FTP user account on ubuntu

If you are going to install an FTP server on Ubuntu, you can choose the simplicity of vsftpd .

FTP stands for File Transfer Protocol. It is similar to HTTP (HyperText Transfer Protocol), in that it specifies a language for transferring data over a network. FTP is unencrypted by default, so by itself, it is not a good choice for secure transmission of data.

This guide will help you install and configure an FTP server (vsftpd ) on Ubuntu 18.04.


  • Access to a user account with sudo privileges
  • Access to a terminal window/command line (Ctrl-Alt-T)
  • The apt package manager, included by default

Step 1: Update System Packages

Start by updating your repositories – enter the below commnad in a terminal window:

sudo apt-get update

Step 2: Backup Configuration Files

Before making any changes, make sure to back up your configuration files.

1. Create a backup copy of the default configuration file by entering the following:

sudo cp /etc/vsftpd.conf  /etc/vsftpd.conf_default

This command creates a copy of the default configuration file.

2. Create a new vsftpd configuration file /etc/vsftpd.conf using your preferred text editor:

$ sudo nano /etc/vsftpd.conf

Step 3: Install vsftpd Server on Ubuntu

A common open-source FTP utility used in Ubuntu is vsftpd. It is recommended for its ease of use.

1. To install vsftpd, enter the command:

sudo apt install vsftpd

2. To launch the service and enable it at startup:

sudo systemctl start vsftpd

sudo systemctl enable vsftpd

Step 4: Create FTP User

Create a new FTP user with the following commands:

sudo useradd –m testuser

sudo password testuser

The system should ask you to create a password for the new testuser account. Create a sample file in the new user’s home account:

sudo mkdir /home/testuser

Step 5: Configure Firewall to Allow FTP Traffic

If you are using UFW that comes standard with Ubuntu, it will block FTP traffic by default. Enter the following commands to open Ports 20 and 21 for FTP traffic:

sudo ufw allow 20/tcp

sudo ufw allow 21/tcp

Note: If you are using a different firewall, refer to the instructions to allow access on Port 20 and Port 21. These are the listening ports for the FTP service.

Step 6: Connect to Ubuntu FTP Server

Connect to the FTP server with the following command:

sudo ftp ubuntu-ftp

Replace ubuntu-ftp with the name of your system (taken from the command line).

Log in using the testuser account and password you just set. You should now be successfully logged in to your FTP server.

Configuring and Securing Ubuntu vsftpd Server

Change Default Directory

By default, the FTP server uses the /srv/ftp directory as the default directory. You can change this by creating a new directory and changing the FTP user home directory.

To change the FTP home directory, enter the following:

sudo mkdir /srv/ftp/new_location

sudo usermod –d /srv/ftp/new_location ftp

Restart the vsftpd service to apply the changes:

sudo systemctl restart vsftpd.service

Now, you can put any files you want to share via FTP into the /srv/ftp folder (if you left it as the default), or the /srv/ftp/new_location/ directory (if you changed it).

Authenticate FTP Users

If you want to let authenticated users upload files, edit the vsftpd.conf file by entering the following:

sudo nano /etc/vsftpd.conf

Find the entry labeled write_enable=NO, and change the value to “YES.”

Write_Enable option in vsftpd.config file.

Save the file, exit, then restart the FTP service with the following:

sudo systemctl restart vsftpd.service

This allows the user to make changes inside their home directory.

Securing FTP

Limit User Access

Numerous exploits take advantage of unsecured FTP servers. In response, there are several configuration options in vsftpd.conf that can help secure your FTP server.

One method is to limit users to their home directory. Open vsftpd.conf in an editor and uncomment the following command:


This is an example of the file in nano:

Command to limit users to their home directory.

Create a User List File

To create a list file, edit /etc/vsftpd.chroot_list, and add one user per line.

Instruct your FTP server to limit this list of users to their own home directories by editing vsftpd.conf:



The image ilustrates the edits that were made:

Chroot list to limit user access.

Restart the vsftpd service:

sudo systemctl restart vsftpd.service

By default, the list of blocked users from FTP access is stored in /etc/ftpusers. To add blocked users, edit this file and add one user per line.

Encrypt Traffic With FTPS

Another method to secure your FTP server is to encrypt the traffic. This is done by using FTPS – File Transfer Protocol over SSL (Secure Socket Layer).

For this to work, users need to be set up with a shell account on the FTP server. This will add a layer of secure encryption to your FTP traffic. To set up FTPS, open your vsftpd.conf file in an editor, and add the following lines:




The file shoullook like this:

Enable SSl for vsftpd on Ubuntu.

Restart the service to apply the changes:

sudo systemctl restart vsftpd.service

Thank you for reading this article.

Was this helpful?

1 / 0

Leave a Reply 16

Your email address will not be published. Required fields are marked *



It worked! Thank you.



My programmer is trying to convince me to move to .net from PHP.

I have always disliked the idea because of the expenses.

Your help greatly appreciated!

Read More

Read More

I’m extremely impressed with your writing skills as well as with the layout on your weblog. Is this a paid theme or did you customize it yourself? Anyway keep up the excellent quality writing, it’s rare to see a great blog like this one nowadays.



Thanks for sharing your thoughts. I truly appreciate your efforts and I am waiting for your further write ups thanks once again.

pçi satın al

pçi satın al

Pretty section of content. I just stumbled upon your website and in accession capital to assert that I acquire in fact enjoyed account your blog posts.
Any way I’ll be subscribing to your feeds and even I achievement you
access consistently rapidly.



It’s an amazing post in favor of all the online people; they
will get benefit from it I am sure.



Very nice, I’m new to the blog
world but I’m trying to get started and set up my own.
Any help would be greatly appreciated!



Very nice,
Your help is greatly appreciated!



Hello everyone, it’s my first pay a visit at this site, and post is
actually fruitful for me, keep up posting such articles.



Im obliged for the blog article.Much thanks again. Want more.



My brother suggested I might like this web site. He was totally right.
This post actually made my day. You can not imagine just how much time
I had spent for this info! Thanks!



I’ve learn several good stuff here. Definitely price bookmarking for
revisiting. I wonder how a lot attempt you set to create any such great informative site.



Just desire to say your article is as amazing. The clarity in your
post is simply nice and i could assume you’re an expert on this
subject. Well with your permission allow me to grab your
RSS feed to keep updated with forthcoming post. Thanks a million and please keep up the gratifying work.



Hi there friends, its enormous paragraph about education and fully explained, keep it up all the time.



Hi colleagues, its wonderful article about teaching and entirely defined, keep it up all
the time.



This post will assist the internet users for creating new blog or even a weblog from start to end.