vsftpd 配置文件详解
vsftpd 是 Linux 系统中一个安全、快速的 FTP 服务器软件。其核心配置文件通常位于 /etc/vsftpd/vsftpd.conf。以下是对常见配置项的详细说明。
基本目录与端口设置
这些选项定义了服务器的根目录和监听端口。
# 本地用户登录后的根目录(需配合 chroot 使用)
local_root=/download
# 修改默认监听端口(21),修改后需重启服务并开放防火墙
# listen_port=4449
用户访问与权限控制(第一部分)
这部分配置决定了哪些用户可以登录以及他们拥有何种基本权限。
# 是否允许匿名登录。YES 允许,NO 禁止。
anonymous_enable=NO
# 是否允许系统本地用户登录。如果设置为 NO,所有虚拟用户也将无法登录。
local_enable=YES
# 全局写权限开关。必须为 YES,用户才能上传、删除或修改文件。
write_enable=YES
# 本地用户创建文件和目录时的默认权限掩码。
# 022 对应目录 755、文件 644;077 对应目录 700、文件 600。
local_umask=022
# 是否允许匿名用户上传文件(要求 write_enable=YES)。
anon_upload_enable=NO
# 是否允许匿名用户创建目录。
anon_mkdir_write_enable=NO
连接与日志设置
配置连接模式、端口以及日志记录行为。
# 启用目录欢迎信息(读取目录下的 .message 文件)。
dirmessage_enable=YES
# 主动模式数据传输使用 20 端口。
connect_from_port_20=YES
# 启用被动模式(PASV),这对位于防火墙后的客户端很重要。
pasv_enable=YES
# 是否启用传输日志。默认 NO,如需审计可开启。
xferlog_enable=NO
# 日志文件路径(若开启 xferlog_enable,需确保文件存在且有写入权限)。
# xferlog_file=/var/log/xferlog
性能与超时设置
优化服务器性能并防止空闲连接占用资源。
# 用户会话空闲超时时间(秒),超过则断开连接。
# idle_session_timeout=600
# 建立数据连接的超时时间(秒)。
# data_connection_timeout=120
# 是否允许异步 ABOR 命令。通常建议禁用,以增强安全性。
async_abor_enable=NO
# 是否启用 ASCII 模式传输。建议全部禁用,使用二进制模式更安全通用。
ascii_upload_enable=NO
ascii_download_enable=NO
# 是否允许递归列出目录(如 ls -R)。人少时可开启提高便利性,人多时可能影响性能。
ls_recurse_enable=YES
高级安全与限制(第二部分)
这些选项提供了更精细的用户控制和访问限制。
# 是否将本地用户锁定在其主目录内(chroot)。
chroot_local_user=YES
# 是否启用例外用户列表。
chroot_list_enable=YES
# 例外列表文件路径。当 chroot_local_user=YES 时,此文件列出“不被锁定”的用户。
chroot_list_file=/etc/vsftpd/chroot_list
# 启用用户列表控制。
userlist_enable=YES
# 当 userlist_enable=YES 时,此选项决定 user_list 文件是拒绝名单还是允许名单。
# NO 表示 /etc/vsftpd/user_list 中的用户是“允许登录”的。
userlist_deny=NO
# 独立运行模式,监听 IPv4 端口。
listen=YES
# 是否监听 IPv6 端口。与 listen=YES 冲突,只能启用一个。
listen_ipv6=NO
# PAM 认证服务名称。
pam_service_name=vsftpd
# 使用 TCP Wrappers 进行基于主机地址的访问控制(通过 /etc/hosts.allow 和 /etc/hosts.deny)。
tcp_wrappers=YES
# 被动模式使用的端口范围,需在防火墙中开放此范围。
pasv_min_port=31888
pasv_max_port=36888
连接数与速率限制
用于控制服务器负载和带宽。
# 服务器允许的最大客户端连接数(0 为无限制)。
max_client=5
# 每个 IP 地址允许的最大连接数(0 为无限制)。
max_per_ip=5
# 本地用户最大传输速率(字节/秒,0 为无限制)。
local_max_rate=0
# 匿名用户最大传输速率(字节/秒,0 为无限制)。
anon_max_rate=0
重要说明与操作建议
- 文件创建:配置文件提到的
chroot_list、user_list等文件若不存在,需手动创建。 - 权限管理:修改配置后,务必注意相关文件(如日志文件)的所属用户和权限,确保 vsftpd 进程有读写权限。
- SELinux:在启用 SELinux 的系统上,可能需要调整布尔值(如
setsebool -P ftp_home_dir on)或文件上下文。 - 防火墙:如果修改了默认端口或启用了被动模式,必须在系统防火墙中开放相应端口。
- 配置生效:每次修改
vsftpd.conf后,需重启 vsftpd 服务(例如systemctl restart vsftpd)。