ProFTPd not being configured by Virtualmin


I just installed Virtualmin and when I create a vserver, everything works except FTP using the default settings.

YES, I made sure that /etc/shells contained the right line,
but the default config that Virtualmin writes when you make a vserver isn’t letting me login.

Is there something I’m missing? All I want is for each vserver admin to be able to FTP to their home directory.

Any hints/suggestions??


Hey Darryl,

Check the logs in /var/log/proftpd, and let us know what you find.

Hi Joe,

There doesn’t appear to be anything in there - no log at all
just an empty directory.

When I open an FTP connection, the server responds with ProFTPd and 530’s every login.


Hey Darryl,

It’s gotta be logging somewhere.

Check in /var/log/secure and /var/log/messages for something about the issue. It’s hard to guess what’s going wrong without some kind of error.

vps18001 proftpd[[3572]]: hostnameremovedbyme ([[]]) - FTP session opened.
Aug 2 21:46:04 vps18001 proftpd[[3572]]: hostnameremovedbyme ([[]]) - no such user ‘djones’
Aug 2 21:46:11 vps18001 proftpd[[3572]]: hostnameremovedbyme ([[]]) - no such user ‘djones’
Aug 2 21:50:55 vps18001 proftpd[[3572]]: hostnameremovedbyme ([[]]) - FTP no transfer timeout, disconnected

No errors other than the "no user" error

Almost forgot!

This is the default ProFTPd config:

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 inetd
DefaultServer on

Port 21 is the standard FTP port.

Port 21

Umask 022 is a good standard umask to prevent new dirs and files

from being group and world writable.

Umask 022

Disable IdentLookups by default

IdentLookups off

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 that the server normally runs at.

User nobody
Group nobody

Normally, we want files to be overwriteable.

<Directory /*>
AllowOverwrite on
AllowStoreRestart on
AllowRetrieveRestart on

Needed for NIS.

PersistentPasswd off

A basic anonymous configuration, no upload directories.

#[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

RequireValidShell off

AnonRequirePassword off

# We want ‘welcome.msg’ displayed at login, and ‘.message’ displayed

# in each newly chdired directory.

DisplayLogin welcome.msg

DisplayFirstChdir .message

# Limit WRITE everywhere in the anonymous chroot

[Limit WRITE>




Default root can be used to put users in a chroot environment.

As an example if you have a user foo and you want to put foo in /home/foo

chroot environment you would do this:

DefaultRoot /home/foo foo

By default webadmin access to /var/www

DefaultChdir /var/www webadmin

<Limit LOGIN>
AllowGroup ftpusers
RootLogin off
DefaultRoot ~
DeleteAbortedStores on
HiddenStor on

This is what Virtualmin adds for each vserver:

ServerName ${DOM}
<Anonymous ${HOME}/ftp>
User ftp
Group ftp
UserAlias anonymous ftp
<Limit WRITE>
RequireValidShell off
ExtendedLog ${HOME}/logs/ftp.log