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

by Ramesh Natarajan on November 22, 2010

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> 

Linux Sysadmin Course Linux provides several powerful administrative tools and utilities which will help you to manage your systems effectively. If you don’t know what these tools are and how to use them, you could be spending lot of time trying to perform even the basic administrative tasks. The focus of this course is to help you understand system administration tools, which will help you to become an effective Linux system administrator.
Get the Linux Sysadmin Course Now!

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… read them below or add one }

1 shanil November 22, 2010 at 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

2 diptanu November 23, 2010 at 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

3 james k September 2, 2011 at 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

4 harish March 8, 2012 at 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 :)

5 Yugandhar August 8, 2012 at 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

6 subhadra September 28, 2012 at 8:54 pm

Brilliant!!

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

Thank you

7 sangram September 23, 2013 at 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.

8 sangram September 23, 2013 at 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..

9 Rohan September 23, 2013 at 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

Previous post:

Next post: