vsftpd
Configuration Options
Although vsftpd
may not offer the level of customization other widely available FTP servers have, it offers enough options to fill most administrator's needs. The fact that it is not overly feature-laden limits configuration and programmatic errors.
All configuration of vsftpd
is handled by its configuration file, /etc/vsftpd/vsftpd.conf
. Each directive is on its own line within the file and follows the following format:
<directive>
=<value>
For each directive, replace <directive>
with a valid directive and <value>
with a valid value.
There must not be any spaces between the <directive>
, equal symbol, and the <value>
in a directive.
Comment lines must be preceded by a hash mark (#
) and are ignored by the daemon.
For a complete list of all directives available, refer to the man page for vsftpd.conf
.
For an overview of ways to secure vsftpd
, refer to "Server Security".
The following is a list of some of the more important directives within The following is a list of directives which control the overall behavior of the The default value is The default value is The default value is The following is a list of directives which control the login behavior and access control mechanisms.
The default value is Refer to "Anonymous User Options" for a list of directives affecting anonymous users.
The default value is There is no default value for this directive.
There is no default value for this directive.
The default value is By default The default value is Refer to "Local User Options" for a list of directives affecting local users.
The default value is The default value is Refer to "TCP Wrappers and xinetd" for more information about TCP wrappers.
The default value is The default value is The default value is The following lists directives which control anonymous user access to the server. To use these options, the The default value is There is no default value for this directive.
The default value is The default value is The default value is The default value is Anonymous logins are prevented unless the password provided is listed in The default value is The following lists directives which characterize the way local users access the server. To use these options, the The default value is If enabled in conjunction with the The default value is The default value is The default value is Enabling The default value is The default value is There is no default value for this directive.
The default value is The default value is There is no default value for this directive. The following lists directives which affect directories.
The default value is The default value is The default value is The default value is The default value is The default value is The default value is The following lists directives which affect directories.
The default value is The default value is The default value is The default value is The following lists directives which affect The default value is The default value is The default value is The default value is The default value is The default value is The default value is To maintain compatibility with log files written by the older To both log connections in If maintaining a The following lists directives which affect how The default value is The default value is The default value is The default value is The default value is The default value is The default value is There is no default value for this directive.
If running multiple copies of There is no default value for this directive.
If running multiple copies of The default value is The default value is The default value is The default value is There is no default value for this directive.
The default value is The default value is The default value is The default value is Do not enable this option unless absolutely necessary as it disables an important security feature which verifies that passive mode connections originate from the same IP address as the control connection that initiates the data transfer.
The default value is /etc/vsftpd/vsftpd.conf
. All directives not explicitly found within vsftpd
's configuration file are set to their default value.
Daemon Options
vsftpd
daemon.
listen
- When enabled, vsftpd
runs in stand-alone mode. Community Enterprise Linux sets this value to YES
. This directive cannot be used in conjunction with the listen_ipv6
directive.NO
.
listen_ipv6
- When enabled, vsftpd
runs in stand-alone mode, but listens only to IPv6 sockets. This directive cannot be used in conjunction with the listen
directive.
NO
.
session_support
- When enabled, vsftpd
attempts to maintain login sessions for each user through Pluggable Authentication Modules (PAM). Refer to "Pluggable Authentication Modules (PAM)" for more information. If session logging is not necessary, disabling this option allows vsftpd
to run with less processes and lower privileges.
YES
.Log In Options and Access Controls
anonymous_enable
- When enabled, anonymous users are allowed to log in. The usernames anonymous
and ftp
are accepted.YES
.
banned_email_file
- If the deny_email_enable
directive is set to YES
, this directive specifies the file containing a list of anonymous email passwords which are not permitted access to the server.
/etc/vsftpd.banned_emails
.
banner_file
- Specifies the file containing text displayed when a connection is established to the server. This option overrides any text specified in the ftpd_banner
directive.
cmds_allowed
- Specifies a comma-delimited list of FTP commands allowed by the server. All other commands are rejected.
deny_email_enable
- When enabled, any anonymous user utilizing email passwords specified in the /etc/vsftpd.banned_emails
are denied access to the server. The name of the file referenced by this directive can be specified using the banned_email_file
directive.
NO
.
ftpd_banner
- When enabled, the string specified within this directive is displayed when a connection is established to the server. This option can be overridden by the banner_file
directive.
vsftpd
displays its standard banner.
local_enable
- When enabled, local users are allowed to log into the system.
YES
.
pam_service_name
- Specifies the PAM service name for vsftpd
.
ftp
. On Community Enterprise Operating System, this option is set to vsftpd
in the configuration file.
tcp_wrappers
- When enabled, TCP wrappers are used to grant access to the server. If the FTP server is configured on multiple IP addresses, the VSFTPD_LOAD_CONF
option can be used to load different configuration files based on the IP address being requested by the client.
NO
. On Community Enterprise Operating System, this option is set to YES
in the configuration file.
userlist_deny
- When used in conjunction with the userlist_enable
directive and set to NO
, all local users are denied access unless the username is listed in the file specified by the userlist_file
directive. Because access is denied before the client is asked for a password, setting this directive to NO
prevents local users from submitting unencrypted passwords over the network.
YES
.
userlist_enable
- When enabled, the users listed in the file specified by the userlist_file
directive are denied access. Because access is denied before the client is asked for a password, users are prevented from submitting unencrypted passwords over the network.
NO
. On Community Enterprise Operating System, this option is set to YES
in the configuration file.
userlist_file
- Specifies the file referenced by vsftpd
when the userlist_enable
directive is enabled.
/etc/vsftpd.user_list
and is created during installation.Anonymous User Options
anonymous_enable
directive must be set to YES
.
anon_mkdir_write_enable
- When enabled in conjunction with the write_enable
directive, anonymous users are allowed to create new directories within a parent directory which has write permissions.NO
.
anon_root
- Specifies the directory vsftpd
changes to after an anonymous user logs in.
anon_upload_enable
- When enabled in conjunction with the write_enable
directive, anonymous users are allowed to upload files within a parent directory which has write permissions.
NO
.
anon_world_readable_only
- When enabled, anonymous users are only allowed to download world-readable files.
YES
.
ftp_username
- Specifies the local user account (listed in /etc/passwd
) used for the anonymous FTP user. The home directory specified in /etc/passwd
for the user is the root directory of the anonymous FTP user.
ftp
.
no_anon_password
- When enabled, the anonymous user is not asked for a password.
NO
.
secure_email_list_enable
- When enabled, only a specified list of email passwords for anonymous logins are accepted. This is a convenient way to offer limited security to public content without the need for virtual users.
/etc/vsftpd.email_passwords
. The file format is one password per line, with no trailing white spaces.
NO
.Local User Options
local_enable
directive must be set to YES
.
chmod_enable
- When enabled, the FTP command SITE CHMOD
is allowed for local users. This command allows the users to change the permissions on files.YES
.
chroot_list_enable
- When enabled, the local users listed in the file specified in the chroot_list_file
directive are placed in a chroot
jail upon log in.
chroot_local_user
directive, the local users listed in the file specified in the chroot_list_file
directive are not placed in a chroot
jail upon log in.
NO
.
chroot_list_file
- Specifies the file containing a list of local users referenced when the chroot_list_enable
directive is set to YES
.
/etc/vsftpd.chroot_list
.
chroot_local_user
- When enabled, local users are change-rooted to their home directories after logging in.
NO
.
chroot_local_user
opens up a number of security issues, especially for users with upload privileges. For this reason, it is not recommended.
guest_enable
- When enabled, all non-anonymous users are logged in as the user guest
, which is the local user specified in the guest_username
directive.
NO
.
guest_username
- Specifies the username the guest
user is mapped to.
ftp
.
local_root
- Specifies the directory vsftpd
changes to after a local user logs in.
local_umask
- Specifies the umask value for file creation. Note that the default value is in octal form (a numerical system with a base of eight), which includes a "0" prefix. Otherwise the value is treated as a base-10 integer.
022
.
passwd_chroot_enable
- When enabled in conjunction with the chroot_local_user
directive, vsftpd
change-roots local users based on the occurrence of the /./
in the home directory field within /etc/passwd
.
NO
.
user_config_dir
- Specifies the path to a directory containing configuration files bearing the name of local system users that contain specific setting for that user. Any directive in the user's configuration file overrides those found in /etc/vsftpd/vsftpd.conf
.
Directory Options
dirlist_enable
- When enabled, users are allowed to view directory lists.YES
.
dirmessage_enable
- When enabled, a message is displayed whenever a user enters a directory with a message file. This message resides within the current directory. The name of this file is specified in the message_file
directive and is .message
by default.
NO
. On Community Enterprise Operating System, this option is set to YES
in the configuration file.
force_dot_files
- When enabled, files beginning with a dot (.
) are listed in directory listings, with the exception of the .
and ..
files.
NO
.
hide_ids
- When enabled, all directory listings show ftp
as the user and group for each file.
NO
.
message_file
- Specifies the name of the message file when using the dirmessage_enable
directive.
.message
.
text_userdb_names
- When enabled, text usernames and group names are used in place of UID and GID entries. Enabling this option may slow performance of the server.
NO
.
use_localtime
- When enabled, directory listings reveal the local time for the computer instead of GMT.
NO
.File Transfer Options
download_enable
- When enabled, file downloads are permitted.YES
.
chown_uploads
- When enabled, all files uploaded by anonymous users are owned by the user specified in the chown_username
directive.
NO
.
chown_username
- Specifies the ownership of anonymously uploaded files if the chown_uploads
directive is enabled.
root
.
write_enable
- When enabled, FTP commands which can change the file system are allowed, such as DELE
, RNFR
, and STOR
.
YES
.Logging Options
vsftpd
's logging behavior.
dual_log_enable
- When enabled in conjunction with xferlog_enable
, vsftpd
writes two files simultaneously: a wu-ftpd
-compatible log to the file specified in the xferlog_file
directive (/var/log/xferlog
by default) and a standard vsftpd
log file specified in the vsftpd_log_file
directive (/var/log/vsftpd.log
by default).NO
.
log_ftp_protocol
- When enabled in conjunction with xferlog_enable
and with xferlog_std_format
set to NO
, all FTP commands and responses are logged. This directive is useful for debugging.
NO
.
syslog_enable
- When enabled in conjunction with xferlog_enable
, all logging normally written to the standard vsftpd
log file specified in the vsftpd_log_file
directive (/var/log/vsftpd.log
by default) is sent to the system logger instead under the FTPD facility.
NO
.
vsftpd_log_file
- Specifies the vsftpd
log file. For this file to be used, xferlog_enable
must be enabled and xferlog_std_format
must either be set to NO
or, if xferlog_std_format
is set to YES
, dual_log_enable
must be enabled. It is important to note that if syslog_enable
is set to YES
, the system log is used instead of the file specified in this directive.
/var/log/vsftpd.log
.
xferlog_enable
- When enabled, vsftpd
logs connections (vsftpd
format only) and file transfer information to the log file specified in the vsftpd_log_file
directive (/var/log/vsftpd.log
by default). If xferlog_std_format
is set to YES
, file transfer information is logged but connections are not, and the log file specified in xferlog_file
(/var/log/xferlog
by default) is used instead. It is important to note that both log files and log formats are used if dual_log_enable
is set to YES
.
NO
. On Community Enterprise Operating System, this option is set to YES
in the configuration file.
xferlog_file
- Specifies the wu-ftpd
-compatible log file. For this file to be used, xferlog_enable
must be enabled and xferlog_std_format
must be set to YES
. It is also used if dual_log_enable
is set to YES
.
/var/log/xferlog
.
xferlog_std_format
- When enabled in conjunction with xferlog_enable
, only a wu-ftpd
-compatible file transfer log is written to the file specified in the xferlog_file
directive (/var/log/xferlog
by default). It is important to note that this file only logs file transfers and does not log connections to the server.
NO
. On Community Enterprise Operating System, this option is set to YES
in the configuration file.wu-ftpd
FTP server, the xferlog_std_format
directive is set to YES
under Community Enterprise Linux. However, this setting means that connections to the server are not logged.
vsftpd
format and maintain a wu-ftpd
-compatible file transfer log, set dual_log_enable
to YES
.
wu-ftpd
-compatible file transfer log is not important, either set xferlog_std_format
to NO
, comment the line with a hash mark (#
), or delete the line entirely.Network Options
vsftpd
interacts with the network.
accept_timeout
- Specifies the amount of time for a client using passive mode to establish a connection.60
.
anon_max_rate
- Specifies the maximum data transfer rate for anonymous users in bytes per second.
0
, which does not limit the transfer rate.
connect_from_port_20
When enabled, vsftpd
runs with enough privileges to open port 20 on the server during active mode data transfers. Disabling this option allows vsftpd
to run with less privileges, but may be incompatible with some FTP clients.
NO
. On Community Enterprise Operating System, this option is set to YES
in the configuration file.
connect_timeout
- Specifies the maximum amount of time a client using active mode has to respond to a data connection, in seconds.
60
.
data_connection_timeout
- Specifies maximum amount of time data transfers are allowed to stall, in seconds. Once triggered, the connection to the remote client is closed.
300
.
ftp_data_port
- Specifies the port used for active data connections when connect_from_port_20
is set to YES
.
20
.
idle_session_timeout
- Specifies the maximum amount of time between commands from a remote client. Once triggered, the connection to the remote client is closed.
300
.
listen_address
- Specifies the IP address on which vsftpd
listens for network connections.
vsftpd
serving different IP addresses, the configuration file for each copy of the vsftpd
daemon must have a different value for this directive. Refer to "Starting Multiple Copies of vsftpd
" for more information about multihomed FTP servers.
listen_address6
- Specifies the IPv6 address on which vsftpd
listens for network connections when listen_ipv6
is set to YES
.
vsftpd
serving different IP addresses, the configuration file for each copy of the vsftpd
daemon must have a different value for this directive. Refer to "Starting Multiple Copies of vsftpd
" for more information about multihomed FTP servers.
listen_port
- Specifies the port on which vsftpd
listens for network connections.
21
.
local_max_rate
- Specifies the maximum rate data is transferred for local users logged into the server in bytes per second.
0
, which does not limit the transfer rate.
max_clients
- Specifies the maximum number of simultaneous clients allowed to connect to the server when it is running in standalone mode. Any additional client connections would result in an error message.
0
, which does not limit connections.
max_per_ip
- Specifies the maximum of clients allowed to connected from the same source IP address.
0
, which does not limit connections.
pasv_address
- Specifies the IP address for the public facing IP address of the server for servers behind Network Address Translation (NAT) firewalls. This enables vsftpd
to hand out the correct return address for passive mode connections.
pasv_enable
- When enabled, passive mode connects are allowed.
YES
.
pasv_max_port
- Specifies the highest possible port sent to the FTP clients for passive mode connections. This setting is used to limit the port range so that firewall rules are easier to create.
0
, which does not limit the highest passive port range. The value must not exceed 65535
.
pasv_min_port
- Specifies the lowest possible port sent to the FTP clients for passive mode connections. This setting is used to limit the port range so that firewall rules are easier to create.
0
, which does not limit the lowest passive port range. The value must not be lower 1024
.
pasv_promiscuous
- When enabled, data connections are not checked to make sure they are originating from the same IP address. This setting is only useful for certain types of tunneling.
NO
.
port_enable
- When enabled, active mode connects are allowed.
YES
.