vsftpd 的主配置文件通常位于:

/etc/vsftpd/vsftpd.conf

本文按功能模块系统整理 vsftpd 的常用配置项,对原示例中的错误之处进行修正,并补充生产环境中常用但缺失的选项,适合作为长期参考笔记。


一、运行模式配置

1. listen

listen=NO

作用:控制 vsftpd 的启动方式(IPv4)

  • YES:独立守护进程(standalone)
  • NO :由 inetd / xinetd 启动,或仅配合 listen_ipv6

说明:

  • 现代发行版(systemd)推荐 standalone 模式
  • listen=YESlisten_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=YESwrite_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 → 列表中的用户不 chroot
  • chroot_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