≡ Menu

HowTo: 7 Steps for Linux vsftpd Install, Configuration, Users Setup

vsftpd is lightweight, highly stable, secure, and fast FTP server for Linux environment. vsftpd powers lot of heavily used FTP service in the internet (including ftp.redhat.com).

vsftpd also supports virtual ip, virtual users, bandwidth throttling, IPv6, encryption etc.,

This article provides step-by-step instructions on how to setup vsftpd on your server from source.

1. Download vsftpd Source

Go to vsftpd download site and scroll down to download the latest version of the vsftpd. Or use wget to download it directly on your server.

# wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.3.2.tar.gz

2. Compile vsftpd source

Compile the vsftpd source as shown below.

# tar xvfz vsftpd-2.3.2.tar.gz

# cd vsftpd-2.3.2

# make

After the make command executes successfully, you’ll see vsftpd file getting created in the current directory.

# ls -l vsftpd

3. Install vsftpd on Linux

You can either move the vsftpd file manually to /usr/local/sbin directory and set appropriate permissions, or execute the make install as shown below.

# make install
if [ -x /usr/local/sbin ]; then \
                install -m 755 vsftpd /usr/local/sbin/vsftpd; \
        else \
                install -m 755 vsftpd /usr/sbin/vsftpd; fi
if [ -x /usr/local/man ]; then \
                install -m 644 vsftpd.8 /usr/local/man/man8/vsftpd.8; \
                install -m 644 vsftpd.conf.5 /usr/local/man/man5/vsftpd.conf.5; \
        elif [ -x /usr/share/man ]; then \
                install -m 644 vsftpd.8 /usr/share/man/man8/vsftpd.8; \
                install -m 644 vsftpd.conf.5 /usr/share/man/man5/vsftpd.conf.5; \
        else \
                install -m 644 vsftpd.8 /usr/man/man8/vsftpd.8; \
                install -m 644 vsftpd.conf.5 /usr/man/man5/vsftpd.conf.5; fi

After make install, make sure the vsftpd file is copied to /usr/local/sbin directory.

# ls -l /usr/local/sbin/vsftpd
-rwxr-xr-x 1 root root 107652 Oct 30 20:23 /usr/local/sbin/vsftpd

4. Copy vsftpd man pages to /usr/share/man/man8, man5

You might get the following make install error messages because /usr/local/man/man8 and man5 directory does not exist.

install: cannot create regular file `/usr/local/man/man8/vsftpd.8': No such file or directory
install: cannot create regular file `/usr/local/man/man5/vsftpd.conf.5': No such file or directory
make: *** [install] Error 1

Copy the man pages manually to the /usr/share/man/man8 and man5 directory as shown below.

# cp vsftpd.8 /usr/share/man/man8/

# cp vsftpd.conf.5 /usr/share/man/man5/

5. Copy vsftpd.conf configuration file

vsftpd comes with a default configuration file. Copy this vsftpd.conf to /etc directory.

# cp vsftpd.conf /etc

6. Setup Anonymouse FTP access for vsftpd

Make sure ftp user already exists.

# grep ftp /etc/passwd
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

Create /var/ftp directory and set appropriate privileges.

#  mkdir /var/ftp/

# chown root.root /var/ftp

# chmod og-w /var/ftp

Login using anonymous (or ftp user) to make sure it works as shown below.

# ftp localhost
Connected to dotcom.
220 (vsFTPd 2.3.2)
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

At this stage, if you try to login with any other account (except anonymous, and ftp), it will fail as shown below.

# ftp localhost
Connected to dotcom.
220 (vsFTPd 2.3.2)
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): ramesh
530 This FTP server is anonymous only.
Login failed.
ftp> 

7. Allow UNIX logins to use vsftp

You might want to setup ftp users other than anonymous or ftp. You can allow Linux login account to be used to access the vsftpd server.

First, copy the vsftpd.pam template provided along with the source code to the /etc/pam.d/ftp directory

# cp RedHat/vsftpd.pam /etc/pam.d/ftp

Remove the comment from the local_enable parameter in the /etc/vsftpd.conf file. i.e local_enable should be set to YES to allow local Unix accounts to be used to login from the ftp.

#local_enable=YES

Kill the running vsftpd, and restart it again. Now, try to login again with a Linux user account using the ftp and it should work.

# ps -ef | grep vsftpd

# kill -9 {vsftpd-pid}

# /usr/local/sbin/vsftpd &

# ftp localhost
Connected to dotcom.
220 (vsFTPd 2.3.2)
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): ramesh
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

If you enjoyed this article, you might also like..

  1. 50 Linux Sysadmin Tutorials
  2. 50 Most Frequently Used Linux Commands (With Examples)
  3. Top 25 Best Linux Performance Monitoring and Debugging Tools
  4. Mommy, I found it! – 15 Practical Linux Find Command Examples
  5. Linux 101 Hacks 2nd Edition eBook Linux 101 Hacks Book

Bash 101 Hacks Book Sed and Awk 101 Hacks Book Nagios Core 3 Book Vim 101 Hacks Book

{ 9 comments… add one }

  • shanil November 22, 2010, 1:52 pm

    Hi mate, very nice article..just in time lol..but how do we view it via the web browser remotely? i mean ftp://ip-address
    Where do we define which folder to use where we can put things

    Thanks

  • diptanu November 23, 2010, 2:14 am

    Hi Ramesh,
    I have a unique problem with vsftpd.in my vsftpd.conf i have disabled anonymous login.
    [root@testhost vsftpd]# grep -i anonymous_enable vsftpd.conf
    anonymous_enable=NO
    [root@testhost vsftpd]#
    The user through which I am testing is a system user (exists in /etc/passwd)

    [root@testhost log]# cat /etc/passwd|grep -i ftpdata
    ftpdata:x:502:502::/data/logs/ftpdata:/sbin/nologin
    [root@testhost log]#

    Now when i m accesing my site through the public ip from browser(internet explorer) with the linux user (ftpdata, mentioned above) ie ftp://:

    then in my /var/log/secure, I am not getting the proper username always for the authentication logs.
    below are some logs from /var/log/secure

    test with wrong password for user ftpdata
    =================================
    Nov 23 13:27:54 testhost vsftpd: pam_unix(vsftpd:auth): check pass; user unknown
    Nov 23 13:27:54 testhost vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=anonymous rhost=
    Nov 23 13:27:54 testhost vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user anonymous

    test with wrong password for user ftpdata
    =================================
    Nov 23 13:27:58 testhost vsftpd: pam_unix(vsftpd:auth): check pass; user unknown
    Nov 23 13:27:58 testhost vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=anonymous rhost=
    Nov 23 13:27:58 testhost vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user anonymous

    test with proper passwd for user ftpdata (and i was able to login), still the logs says authentication failure!!!!!!!!!!!!!!!!!
    ==================================================================

    Nov 23 13:28:08 testhost vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=ftpdata rhost= user=ftpdata
    Nov 23 13:28:18 testhost vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=ftpdata rhost= user=ftpdata

    I am useing RHEL5 with update 8 (tikanga)
    kernel 2.6.18-8.el5
    vsftpd verion:- vsftpd: version 2.0.5

    Can u please let me know any reason for such absurd behaiviour

  • james k September 2, 2011, 7:35 am

    Thanks for the detailed guideline, i was learning it for the first time, and it worked like a charm. where can i get guideline on how to configure exim email server.
    Thanks again,
    James
    Kenya

  • harish March 8, 2012, 10:15 pm

    I installed vsftpd from RHEL5 repos with all default configurations. I see following errors filling my /var/log/secure file even though user logins succeeds.

    vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser= rhost= user=

    Can someone help me understand where this is coming from ? appreciate much :)

  • Yugandhar August 8, 2012, 4:35 pm

    Hi,

    while executing my FTP script am face an error .. here my scrip and error..pls help me ..
    #!/bin/sh
    HOST=”10.180.3.2″
    DEST=”/home/DB_Backup/”
    SOURCE=”/home/DB_Backup/”
    date=$1
    USER=”root”
    PASSWD=”root”
    cd $SOURCE
    ftp -n $HOST << END_SCRIPT
    quote USER $USER
    quote PASS $PASSWD
    cd $DEST
    bin
    put ipsmsdbdump_$date.gz
    put psdbdump_$date.gz
    quit
    END_SCRIPT

    Please login with USER and PASS.
    Please login with USER and PASS.
    KERBEROS_V4 rejected as an authentication type
    Permission denied.
    Login with USER first.
    Please login with USER and PASS.
    Please login with USER and PASS.
    local: ipsmsdbdump_.gz: No such file or directory
    local: psdbdump_.gz: No such file or directory

  • subhadra September 28, 2012, 8:54 pm

    Brilliant!!

    2 months after installing RHEL , this is the first thing that actually worked!!

    Thank you

  • sangram September 23, 2013, 5:54 am

    I want to enable ftp on my redhat linux 5.4 tikanga, i want the vsftpd source for my linux version , i got all source file from this link “ftp://vsftpd.beasts.org/users/cevans/untar/ ” & tried to compile using make command but none out of them was compiled successfully .
    error is coming , i tried lot to get vsftpd source but did not get . plz give me solution for this. or how to enable vsftpd any other solution.

  • sangram September 23, 2013, 5:57 am

    sir my linux version is Linux version 2.6.18-164.el5PAE (mockbuild@x86-002.build.bos.redhat.com) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) #1 SMP Tue Aug 18 15:59:11 EDT 2009
    plz give me some hint..

  • Rohan September 23, 2013, 6:58 am

    Getting error while doing the ftp setup on Red Hat Enterprise Linux Server release 5.4 (Tikanga).

    [root@user /]# rpm -q ftp
    ftp-0.17-35.el5

    Also after using “yum install ftp” command got following error
    Loaded plugins: rhnplugin, security
    This system is not registered with RHN.
    RHN support will be disabled.
    Setting up Install Process
    Nothing to do
    ====================
    *I don’t have the subscription number for enabling to RHN.
    Pl help.

Leave a Comment