Installing and Configuring ProFTPD Server in Ubuntu/Debian

FTP servers are the piece of software that allows you to create a FTP connection between your local computer and a web server. ProFTPD is a FTP server for Unix/Linux servers, very configurable and very effective, it is free & open-sourced, released under the GPL license.

Install Proftpd in Debian

Install Proftpd in Ubuntu and Debian

In this article, we’ll explain how to install ProFTPD server on Ubuntu/Debian machines.

Step 1: Install ProFTPD Server

Of course, you need to install the software in order to use it. First make sure that all your system packages are up-to-date by running these following apt-get commands in the terminal.

$ sudo apt-get update
$ sudo apt-get upgrade

Now to install ProFTPD server, run in the terminal.

$ sudo apt-get install proftpd

While installing, it will ask you to choose the usage type you want for your ProFTPD server, you may choose the best mode that fits your needs.

Install Proftpd in Debian

Install Proftpd Server

Step 2: Configure ProFTPD Server

Before start using it, we’ll need to edit some files, the /etc/proftpd/proftpd.conf is the default configuration file for Ubuntu/Debian servers, to start editing it using the vi command, run.

$ sudo vi /etc/proftpd/proftpd.conf
Configure Proftpd in Ubuntu

Configure Proftpd Server

Press the “I” key to start editing the file. Now change the content of the file as shown it below.

  1. ServerName: Make it your default server name.
  2. UseIPV6: You may switch it to “Off“, if you don’t use it.
  3. DefaultRoot : Uncomment this line to restrict users with their home folders.
  4. RequireValidShell: Uncomment this line and make it “On” to enable logging in for users, even for those who doesn’t have a valid shell in /etc/shells to log in.
  5. AuthOrder: Uncomment the line to enable the using of local passwords.
  6. Port: This line defines the default port for the FTP server, it is 21 by default. If you want, you can define any custom port here.
  7. SystemLog: The default log file path, you may change it if you want.

After making above changes as suggested, you can save the file, press the “ESC” key and write :x to save and quite .

Now restart the ProFTPD server using this command.

$ sudo service proftpd restart

During ProFTPD installation, a default “proftpd” user created automatically, but we’ll need to create a password for it, to do so, run.

$ sudo passwd proftpd

That’s it!. You can now go to following addresses on the browser, it will be up and running, it will ask you about the user name and the password.

ftp://youripaddress 

OR

ftp://yourdomian.com
Login to Proftpd

Login to Proftpd

In the User Name filed write “proftpd” and in the Password filed write the password that you set before for the proftpd user.

Proftpd Directory Listing

Proftpd Directory Listing

Step 3: Creating ProFTPD Users

As you noticed, you are in the default home directory for the “proftpd” user, which isn’t useful for us, thats why we are going to create a new user with the /var/www/ folder as the home folder, so we can access it easily.

To create a FTP user say “myproftpduser” run.

$ sudo useradd myproftpduser

To create a password for it.

$ sudo passwd myproftpduser

To change it’s home folder to /var/www/ run.

$ sudo usermod -m -d /var/www/ myproftpduser

You can also define user home directory with useradd command, while creating a new users in Linux, for more information and usage of useradd command, read our article at.

  1. 15 Examples of ‘useradd’ Command

Now restart the ProFTPD server using.

$ sudo service proftpd restart

And now you can access it from the FTP server easily, you may also use Filezilla or any other FTP client to access your FTP server as well if you want.

Step 4: Troubleshooting ProFTPD:

Any available error messages will be stored in /var/log/proftpd/proftpd.log by default, you may check this file if your ProFTPD server installation isn’t working, you must also note that sometimes it happens that the ProFTPD server lags and you can’t access the server due to the “Connection Refused” message, it is not a problem, all what you have to do is to keep restarting the ProFTPD server until it works (in case if there were no other errors).

Have you installed the ProFTPD server before? What do you think about it when comparing it to other FTP servers like wu-ftpd ?

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

Support Us

We are thankful for your never ending support.

Hanny Helal

A Linux & Foss user since 2010, working on many projects in the field of Free Software.

Your name can also be listed here. Got a tip? Submit it here to become an TecMint author.

RedHat RHCE and RHCSA Certification Book
Linux Foundation LFCS and LFCE Certification Preparation Guide

You may also like...

12 Responses

  1. John Doe II says:

    Which is better, a ftp://youripaddress type FTP or a ftp://yourdomian.com type FTP? And if a ftp://yourdomian.com type is better, how do you make a domain/website in Linux?

  2. Felipe Correa says:

    How do I lock the user so he cannot go back to the www or var directory, and even the core? For the user to be able to send files and delete file, what do I have to do?

  3. eren says:

    I wonder how to install proftpd on /opt directory

  4. Priynkara says:

    Command: PASS *******
    Response: 530 Login incorrect.
    Error: Critical error: Could not connect to server
    Status: Disconnected from server
    Status: Connecting to 162.243.205.246:21…
    Status: Connection established, waiting for welcome message…
    Status: Insecure server, it does not support FTP over TLS.
    Command: USER sankapr
    Response: 331 Password required for sankapr
    Command: PASS *******
    Response: 530 Login incorrect.
    Error: Critical error: Could not connect to server

    I set all the setting correctly. But This error occurred. Pls anyone tell me the solution for this

    • Ravi Saive says:

      @Priynkara,

      Have you restarted vsftpd after making configuration? if not do:

      $ sudo /etc/init.d/vsftpd
      

      If you still gets the same error, another important thing to verify that the user shell present in /etc/shells? Could you share your vsftpd configuration here?

  5. I confgure on ubunu 14 runing on aws servers I get this:
    Status: Resolving address of ec2-54-213-162-181.us-west-2.compute.amazonaws.com
    Status: Connecting to 54.213.162.181:21…
    Status: Connection established, waiting for welcome message…
    Response: 220 ProFTPD 1.3.5rc3 Server (ec2-54-213-162-181.us-west-2.compute.amazonaws.com) [172.31.25.20]
    Command: USER userftp
    Response: 331 Password required for userftp
    Command: PASS ********
    Response: 230 User userftp logged in
    Command: OPTS UTF8 ON
    Response: 200 UTF8 set to on
    Status: Connected
    Status: Retrieving directory listing…
    Command: PWD
    Response: 257 “/var/www” is the current directory
    Command: TYPE I
    Response: 200 Type set to I
    Command: PASV
    Error: Connection timed out
    Error: Failed to retrieve directory listing

    • Ravi Saive says:

      @Rami,

      Try to add these following lines to vsftpd.conf file.

      pasv_enable=YES
      pasv_min_port=10000
      pasv_max_port=10000
      

      will solve your problem…

  6. finck says:

    you said to put it ON instead of OFF in your example (please change my comment)

  7. finck says:

    hi, for RequireValidShell, you said to put ON instead on OFF in your example :

    RequireValidShell: Uncomment this line and make it “On” to enable logging in for users, even for those who doesn’t have a valid shell in /etc/shells to log in.

    to enable logging without shell, you have to put on Off, not on On

  8. Olek says:

    Hi,
    Thaks a lot for super tutorial !!!

  9. Ricardo says:

    Hi,
    RequireValidShell shoud be “no” for this tutorial to work :)

    Thanks a lot

Leave a Reply to Ricardo Cancel reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.