Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

so yesterday I made the move to stop using cPanel on my CentOS 6 server and learn how to use it using a LAMP sertup.

My basic requirement was to just have a web server with ftp access for me and my registered users, I use atmail for my mailing and another server running mysql server on it.

cPanel was just over the top in that aspect, so I moved to LAMP. Now my issue is that I want to be able to make FTP users and lock them into their "home" directory such as /var/www/html/users/<user>

these are the steps I have taken:

1) wget proftpd-1.3.3e.tar.gz (from ftp repo)

2) tar zxvf proftpd-1.3.3e.tar.gz

3) cd /proftpd-1.3.3e.tar.gz

4) ./configure

5) make

6) make install

I edited /etc/proftpd.conf to this 7) vi /etc/proftpd.conf

8) DefaultRoot ~

9) User nobody

Group nobody

thats as far as I have gotten, I attemped to make a user with this command

10) groupadd test

11) useradd -g test1 -p test1 -d /var/www/html/users/ -s /sbin/false test

i tried to login, but Filezilla throws a login incorrect error.

I have looked at maybe 20 guides on how to set up ProFTPD but I am still confused and has been nothing but a learning experience for me.

Can someone perhaps tell me the exact steps needed to get a successful FTP server running much like cPanel sets up when adding FTP accounts.

Edit: this is my proftpd.conf

# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use.  It establishes a single server
# and a single anonymous login.  It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.

ServerName                      "ProFTPD Default Installation"
ServerType                      standalone
DefaultServer                   on

# Port 21 is the standard FTP port.
Port                            21

# Don't use IPv6 support by default.
UseIPv6                         off

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask                           022

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd).
MaxInstances                    30

# Set the user and group under which the server will run.
User                            nobody
Group                           nobody

# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~

# Normally, we want files to be overwriteable.
AllowOverwrite          on

# Bar use of SITE CHMOD by default

# A basic anonymous configuration, no upload directories.  If you do not
# want anonymous users, simply delete this entire <Anonymous> section.
#<Anonymous ~ftp>
#  User                         ftp
#  Group                                ftp

  # We want clients to be able to login with "anonymous" as well as "ftp"
#  UserAlias                    anonymous ftp

  # Limit the maximum number of anonymous logins
#  MaxClients                   10

  # We want 'welcome.msg' displayed at login, and '.message' displayed
  # in each newly chdired directory.
#  DisplayLogin                 welcome.msg
#  DisplayChdir                 .message

  # Limit WRITE everywhere in the anonymous chroot
#  <Limit WRITE>
#    DenyAll
#  </Limit>
share|improve this question
up vote 1 down vote accepted

Did you set AuthOrder to mod_auth_pam.c* mod_auth_unix.c in proftpd.conf?

You can also setup virtual users with ftpasswd.

If you still cannot login, enable the log:

# Define the log formats
LogFormat           default "%h %l %u %t \"%r\" %s %b"
LogFormat           auth    "%v [%P] %h %t \"%r\" %s"

# Define log-files to use
TransferLog /var/log/proftpd/xferlog
ExtendedLog /var/log/proftpd/access_log WRITE,READ write
ExtendedLog /var/log/proftpd/auth_log AUTH auth
ExtendedLog /var/log/proftpd/paranoid_log ALL default

to see what happens.

share|improve this answer
Add AuthOrder directive as I suggested above, restart proftpd and try again. – quanta Aug 13 '11 at 1:59
didn't work, how can i add a group and assign a ew user to that group? – Eli Aug 13 '11 at 2:06
"didn't work" is not good reply. You should give us the error you get. Anyway, you can add a group with groupadd and add an user to that group by useradd -g <group> <user>. – quanta Aug 13 '11 at 2:20
hehe, ya well there isn't much to say. I am unable to connect using Filezilla, how would i abel able to check what users exists? i added a few users with useradd but im starting to think that its not adding them correctly. i used groupadd to add a "test" group but when i include the group in the useradd it returns and error saying that user 'test' doesn't exist – Eli Aug 13 '11 at 2:37
useradd creates a new user. There is no reason for that error "user 'test' doesn't exist". Please give us the exactly command you use and output you get? – quanta Aug 13 '11 at 6:50

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.