vsftpd 的主配置文件通常位于:
/etc/vsftpd/vsftpd.conf
本文按功能模块系统整理 vsftpd 的常用配置项,对原示例中的错误之处进行修正,并补充生产环境中常用但缺失的选项,适合作为长期参考笔记。
一、运行模式配置
1. listen
listen=NO
作用:控制 vsftpd 的启动方式(IPv4)
- YES:独立守护进程(standalone)
- NO :由 inetd / xinetd 启动,或仅配合
listen_ipv6
说明:
- 现代发行版(systemd)推荐 standalone 模式
listen=YES与listen_ipv6=YES不能同时为 YES
2. listen_ipv6
listen_ipv6=YES
作用:启用 IPv6 监听
说明:
- 监听
::地址,可同时接受 IPv6 / IPv4 连接 - 推荐仅启用
listen_ipv6=YES
二、用户认证配置
3. anonymous_enable
anonymous_enable=NO
作用:是否允许匿名用户登录
- YES:允许匿名访问
- NO :禁止匿名访问(生产环境推荐)
4. local_enable
local_enable=YES
作用:是否允许系统本地用户登录 FTP
说明:
- 关闭后,所有系统用户无法通过 FTP 登录
5. write_enable
write_enable=YES
作用:是否允许写操作(上传 / 删除 / 重命名)
注意:
- 所有写权限的总开关
三、权限与 umask
6. local_umask
local_umask=022
作用:设置本地用户新建文件的默认权限掩码
- 文件权限:
666 - umask - 目录权限:
777 - umask
推荐值:
- 022 → 文件 644,目录 755
7. 匿名用户写权限(高风险)
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
说明:
- 仅在
anonymous_enable=YES且write_enable=YES时生效 - 极不推荐在公网启用
四、目录与提示信息
8. dirmessage_enable
dirmessage_enable=YES
作用:进入目录时显示提示文件内容
说明:
- 读取目录下的
.message文件
9. use_localtime
use_localtime=YES
作用:是否使用系统本地时间显示文件时间
推荐:YES
五、日志配置
10. xferlog_enable
xferlog_enable=YES
作用:启用文件传输日志
11. xferlog_file
xferlog_file=/var/log/vsftpd.log
作用:指定日志文件路径
12. xferlog_std_format
xferlog_std_format=YES
作用:使用标准 xferlog 格式
说明:
- 便于与其他 FTP 服务日志统一分析
13. connect_from_port_20
connect_from_port_20=YES
作用:主动模式下使用 20 端口作为数据端口
注意:
- 对防火墙不友好
- 被动模式环境可设为 NO
六、超时控制
14. idle_session_timeout
idle_session_timeout=600
作用:空闲会话超时(秒)
15. data_connection_timeout
data_connection_timeout=120
作用:数据连接空闲超时(秒)
七、安全相关配置
16. nopriv_user
nopriv_user=ftpsecure
作用:vsftpd 使用的低权限运行用户
建议:
- 创建专用无登录权限用户
17. async_abor_enable
#async_abor_enable=YES
说明:
- 兼容旧客户端
- 可能带来安全风险,默认不启用
八、ASCII 模式(不推荐)
#ascii_upload_enable=YES
#ascii_download_enable=YES
说明:
- 易被滥用
- 建议始终使用二进制模式
九、欢迎信息与匿名限制
18. ftpd_banner
ftpd_banner=Welcome to FTP service.
建议:
- 不要包含软件版本信息
19. 匿名邮件限制
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd.banned_emails
十、chroot(目录隔离,极其重要)
20. chroot_local_user
chroot_local_user=YES
作用:将本地用户限制在其家目录中
21. chroot_list_enable / chroot_list_file
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
逻辑说明:
chroot_local_user=YES→ 列表中的用户不 chrootchroot_local_user=NO→ 列表中的用户被 chroot
22. allow_writeable_chroot(必需)
allow_writeable_chroot=YES
说明:
- 允许 chroot 目录可写
- vsftpd 3.x 必须显式开启
十一、被动模式
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=41000
pasv_address=PUBLIC_IP
说明:
- NAT / 云服务器必须配置
- 防火墙需放行端口范围
十二、PAM 与 SSL / TLS
23. PAM 配置
pam_service_name=vsftpd
对应文件:
/etc/pam.d/vsftpd
24. SSL / TLS(FTPS)
ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key
force_local_logins_ssl=YES
force_local_data_ssl=YES
require_ssl_reuse=NO
说明:
- vsftpd 仅支持 Explicit FTPS
- 强烈建议生产环境启用
十三、用户与连接限制(补充)
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
max_clients=50
max_per_ip=5
说明:
- 白名单模式更安全
- 防止暴力破解与滥用
十四、用户根目录定制(重要)
local_root=/home/ftp_share/$USER
user_sub_token=$USER
说明:
- 每个用户自动映射到独立目录
十五、配置要点总结
- 安全必选:chroot + FTPS + 被动模式
- 公网环境:关闭匿名、限制连接数
- 云服务器:必须配置 pasv_address
- vsftpd 3.x:必须显式开启 allow_writeable_chroot