Logging in
By default, the proftpd
daemon reads the host's
/etc/passwd
file for logging in users. This means that to
add FTP users, you simply need to create new system accounts for those users in
your /etc/passwd
file.
Sometimes, though, sites want "virtual", FTP-only users. In order
to support such configurations, the AuthUserFile
configuration
directive can be used (see here for details).
For the purpose of authenticating users using other means, there are various
authentication modules:
mod_sql
,
mod_ldap
,
mod_radius
, etc.
Authentication and the login process is discussed
here in more detail.
For setting up anonymous logins, there is the <Anonymous>
configuration context. If there
are no <Anonymous>
sections in your
proftpd.conf
, then no anonymous logins will be allowed - simple.
As mentioned in the description, the User
directive in an
<Anonymous>
context determines what username is treated as
an anonymous login. The main other thing to know about anonymous logins is
that ProFTPD automatically chroots anonymous logins.
For normal, non-anonymous logins, jails/chroots are configured using the
DefaultRoot
directive. This is the configuration directive used to restrict users to
their home directories, to keep them from browsing around the site. There is
a page covering chrooting here.
If you use <VirtualHost>
sections, and it seems that your
server configuration is not being seen by connecting clients, you might
need to check that, if using a DNS name instead of an IP address in your
<VirtualHost>
line, that name resolves to an IP address
different from that of the "default" server. Many people new
to ProFTPD get the impression that since the configuration syntax looks
similar to Apache's, things like name-based virtual hosting will work as well.
Unfortunately, this is not possible. It is not a limitation in ProFTPD,
but rather in the RFCs that define FTP. See the
virtual server page for more information.
As a workaround, some sites configure virtual servers to run on non-standard
ports, using the Port
configuration directive. As long as
the clients are aware of the non-standard port, this scheme works well. One
minor little caveat to keep in mind, when using this approach, is the numbers
used: the RFCs mandate that the daemon, for the purposes of active data
transfers (as opposed to passive) use port L-1
as the source
port for the data connection, where L
is the port number
at which the client contacted the server. This means that servers that use the
standard port 21 for FTP will use port 20 as the source port for their
active data transfers. (Note that this also means that you do
not need to have port 20 open in your firewall for inbound
connections for FTP data transfers). Passive data transfers do not have this
restriction. The restriction comes into play when choosing non-standard port
numbers for virtual hosts. For example, this configuration would cause
problems for clients of the second virtual server that wanted to use active
data transfers:
<VirtualHost a.b.c.d>
Port 2121
...
</VirtualHost>
<VirtualHost a.b.c.d>
Port 2122
...
</VirtualHost>
The second virtual would attempt to use port 2121 as the source port for
an active data transfer, but would be blocked, as the first virtual server
is already using that port for listening.
Access Restrictions
Many sites like to have specific directories for uploads, and other directories
only for downloads; some sites like to allow downloads, but no browsing
of directories or their contents. For configurations to achieve this,
use combinations of the <Directory>
and
<Limit>
configuration directives. There are separate
pages that cover these configuration sections:
Further Questions
Hopefully this document answers some of your questions, or at least enough
to get you started. In addition, you should take a look at some of the
example configuration
files. Once you are comfortable with the configuration file format, a
reading of all the configuration directives' descriptions is recommended,
especially if you plan on having more complex configurations. When trying to
figure out why something is not working, make use of server
debugging output.
If you still have questions, the
users mailing list is the best place to post them.
© Copyright 2000-2016 The ProFTPD Project
All Rights Reserved