CentOS 7 vsftpd.conf 配置文件详解:监听、用户、权限、被动模式与 TLS

发布时间:2026/7/29 17:29:18

CentOS 7 vsftpd.conf 配置文件详解:监听、用户、权限、被动模式与 TLS
# CentOS 7 vsftpd.conf 配置文件详解监听、用户、权限、被动模式与 TLS1. 服务介绍/etc/vsftpd/vsftpd.conf是 CentOS 7 上 vsftpd 的主配置文件用于控制监听方式、匿名和本地用户、写入权限、目录隔离、被动端口、日志、超时及 TLS 加密。vsftpd 配置项大多采用参数值等号两侧不要留空格。配置文件中的账号策略、Linux 目录权限、防火墙和 SELinux 会共同决定最终结果。只修改一个开关未必能完成登录或上传。2. 准备运行环境• 操作系统CentOS 7.x。• 服务软件YUM 安装的vsftpd。• 主配置文件/etc/vsftpd/vsftpd.conf。• PAM 配置/etc/pam.d/vsftpd。• 用户限制文件/etc/vsftpd/ftpusers、/etc/vsftpd/user_list。• 默认控制端口TCP21。• 操作权限root或具备sudo权限的管理员账号。• 测试客户端Linuxlftp或 Windows FTP/FTPS 客户端。安装工具并备份配置yum install -y vsftpd lftp policycoreutils-python cp -a /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak.$(date %F-%H%M%S) rpm -q vsftpd查看当前生效的非注释配置grep -Ev ^#|^$ /etc/vsftpd/vsftpd.conf3. 相关知识3.1 参数格式配置写法optionvalue布尔值通常使用YES或NO。选项名拼写错误、值格式错误、同一选项重复出现都可能导致服务启动失败。修改后要检查systemctl status和 journal。CentOS 7 的 vsftpd 没有类似nginx -t的常用独立语法检查命令。3.2 FTP 有控制连接和数据连接客户端先连接 TCP 21 建立控制会话。目录列表、上传和下载使用额外数据连接。被动模式下客户端还要连接服务器返回的高位端口因此被动端口范围必须在配置文件、防火墙和 NAT 上保持一致。3.3 功能开关不等于文件权限write_enableYES只允许服务处理写请求。目标目录仍需具备正确属主、权限和 SELinux 类型。排障时要同时检查namei -l /path/to/ftp/directory ls -Zd /path/to/ftp/directory ausearch -m AVC -ts recent3.4 chroot 根目录安全chroot_local_userYES把本地用户限制在 FTP 根目录。安全做法根目录由root管理并保持不可写根目录下创建用户可写的upload子目录。allow_writeable_chrootYES能绕过可写根目录检查但不应作为默认方案。3.5 FTPS 和 SFTPFTPS 是 FTP 加 TLS仍使用 TCP 21 和数据端口SFTP 是 SSH 子系统通常使用 TCP 22。ssl_enableYES配置的是 FTPS不会把 vsftpd 变成 SFTP 服务。4. 实验步骤4.1 监听参数listenYES listen_ipv6NO listen_port21•listenYES独立监听 IPv4。•listen_ipv6YES监听 IPv6 套接字部分系统也可接受 IPv4 映射连接。•listen和listen_ipv6不应同时设置为YES。•listen_address10.1.100.101只绑定指定 IPv4 地址。•listen_port21修改控制端口非标准端口还要同步调整防火墙和客户端。4.2 匿名用户参数anonymous_enableYES no_anon_passwordYES anon_root/var/ftp/pub anon_world_readable_onlyYES anon_upload_enableNO anon_mkdir_write_enableNO anon_other_write_enableNO anon_umask022 ftp_usernameftp•anonymous_enable允许anonymous或ftp登录。•no_anon_password匿名登录不校验邮件格式密码。•anon_root匿名用户根目录。•anon_world_readable_onlyYES只允许下载其他用户也可读的文件。•anon_upload_enable允许上传必须同时设置全局write_enableYES并保证目录权限和 SELinux 允许。•anon_mkdir_write_enable允许新建目录。•anon_other_write_enable允许删除、重命名等其他写操作风险高默认应关闭。如需匿名上传只给独立子目录写权限mkdir -p /var/ftp/pub/upload chown root:root /var/ftp/pub chmod 755 /var/ftp/pub chown ftp:ftp /var/ftp/pub/upload chmod 733 /var/ftp/pub/upload semanage fcontext -a -t public_content_rw_t /var/ftp/pub/upload(/.*)? restorecon -Rv /var/ftp/pub/upload setsebool -P ftpd_anon_write on4.3 本地用户和写权限local_enableYES write_enableYES local_umask022 file_open_mode0666 local_root/srv/ftp/$USER•local_enable允许 Linux 本地账号认证。•write_enable全局写入总开关匿名和本地用户写入都依赖它。•local_umask022新文件权限通常为0666-00220644新目录通常为0777-00220755。•file_open_mode上传文件可用的最大权限与 umask 共同计算。•local_root本地用户登录后的 FTP 根目录。变量支持情况取决于具体参数组合统一按用户名分目录时常与user_sub_token$USER配合。示例user_sub_token$USER local_root/srv/ftp/$USER4.4 用户目录隔离chroot_local_userYES chroot_list_enableNO allow_writeable_chrootNO常见组合| chroot_local_user | chroot_list_enable | 结果 ||---|---|---|| YES | NO | 所有本地用户被限制在根目录 || YES | YES | 默认限制chroot_list_file中用户作为例外不限制 || NO | YES | 默认不限制列表中用户被限制 || NO | NO | 所有用户不限制不推荐 |启用列表时指定chroot_list_file/etc/vsftpd/chroot_list用户根目录建议这样创建mkdir -p /srv/ftp/qwe/upload chown root:root /srv/ftp/qwe chmod 755 /srv/ftp/qwe chown qwe:qwe /srv/ftp/qwe/upload chmod 750 /srv/ftp/qwe/upload4.5 ftpusers 与 user_list/etc/vsftpd/ftpusers通常由 PAM 使用列出的高权限或系统账号禁止 FTP 登录。不要删除其中的root等账号。userlist_enable和userlist_deny控制/etc/vsftpd/user_listuserlist_enableYES userlist_denyYES userlist_file/etc/vsftpd/user_list此时列表是黑名单。改为白名单userlist_enableYES userlist_denyNO userlist_file/etc/vsftpd/user_list白名单模式下仅列表内用户可继续认证。修改前确认管理账号避免把所有用户拒绝在外。4.6 被动模式和 NATpasv_enableYES pasv_min_port30000 pasv_max_port31000服务器位于 NAT 后客户端需要访问公网地址时增加pasv_address203.0.113.10 pasv_addr_resolveNO使用域名作为被动地址时pasv_addressftp.example.com pasv_addr_resolveYES放行防火墙firewall-cmd --permanent --add-serviceftp firewall-cmd --permanent --add-port30000-31000/tcp firewall-cmd --reload4.7 主动模式和数据端口connect_from_port_20YES ftp_data_port20 port_enableYES•connect_from_port_20主动模式数据连接从 TCP 20 发起。•port_enable允许 PORT 主动模式。• 客户端处于 NAT 或严格防火墙后时优先使用被动模式。4.8 日志参数xferlog_enableYES xferlog_std_formatYES xferlog_file/var/log/xferlog dual_log_enableYES vsftpd_log_file/var/log/vsftpd.log log_ftp_protocolYES syslog_enableNO•xferlog_enable记录上传和下载。•xferlog_std_format使用标准 xferlog 格式。•dual_log_enable同时写标准传输日志和 vsftpd 自有日志。•log_ftp_protocol记录 FTP 请求和响应排障有用但日志量更大也可能记录敏感操作信息。•syslog_enableYES把 vsftpd 日志写入系统日志而不是独立日志文件。4.9 超时和连接限制idle_session_timeout600 data_connection_timeout120 accept_timeout60 connect_timeout60 max_clients100 max_per_ip10 local_max_rate0 anon_max_rate1048576•idle_session_timeout控制会话空闲超时单位秒。•data_connection_timeout数据连接超时。•max_clients总客户端上限0表示不限制。•max_per_ip单 IP 并发上限。•local_max_rate、anon_max_rate每秒字节数0表示不限速。4.10 虚拟用户参数guest_enableYES guest_usernameftpvirtual virtual_use_local_privsYES pam_service_namevsftpd-virtual user_sub_token$USER local_root/srv/ftp/virtual/$USER user_config_dir/etc/vsftpd/vconfig•guest_enable把非匿名登录映射为宿主账号。•guest_username虚拟用户统一映射到的 Linux 账号。•virtual_use_local_privsYES虚拟用户使用本地用户权限模型设为NO时更接近匿名用户权限模型。•pam_service_name对应/etc/pam.d/下的 PAM 文件名。•user_config_dir每个用户单独配置目录文件名必须与登录用户名一致。4.11 TLS 参数ssl_enableYES rsa_cert_file/etc/pki/tls/certs/vsftpd.crt rsa_private_key_file/etc/pki/tls/private/vsftpd.key force_local_logins_sslYES force_local_data_sslYES ssl_tlsv1YES ssl_sslv2NO ssl_sslv3NO require_ssl_reuseNO•ssl_enable启用 FTPS。•force_local_logins_ssl本地用户登录必须加密。•force_local_data_ssl本地用户数据连接必须加密。•require_ssl_reuseNO解决部分客户端不支持 TLS 会话复用的问题但会降低严格性应先测试客户端兼容性。• 私钥权限建议设置为600。CentOS 7 自带 vsftpd/OpenSSL 较旧。面向公网前应评估系统生命周期、TLS 协议和密码套件不应继续使用 SSLv2、SSLv3。4.12 欢迎信息与目录消息ftpd_bannerAuthorized FTP service only. dirmessage_enableYES message_file.message登录欢迎语不要暴露系统版本、内部地址或运维联系人私人信息。目录中的.message可用于说明上传规则。4.13 不建议继续依赖 tcp_wrappers旧配置常见tcp_wrappersYES该功能依赖编译选项和系统libwrap支持新版本生态已逐步弃用。CentOS 7 实验可验证是否生效但生产访问控制应优先使用 firewalld、上级防火墙和明确的来源网段策略不应只依赖/etc/hosts.allow、/etc/hosts.deny。4.14 完整安全基线示例listenYES listen_ipv6NO anonymous_enableNO local_enableYES write_enableYES local_umask022 use_localtimeYES chroot_local_userYES allow_writeable_chrootNO user_sub_token$USER local_root/srv/ftp/$USER userlist_enableYES userlist_denyNO userlist_file/etc/vsftpd/user_list pam_service_namevsftpd pasv_enableYES pasv_min_port30000 pasv_max_port31000 xferlog_enableYES xferlog_std_formatYES dual_log_enableYES log_ftp_protocolYES idle_session_timeout600 data_connection_timeout120 max_clients100 max_per_ip10应用配置systemctl restart vsftpd systemctl status vsftpd --no-pager如果重启失败立即恢复备份并查看日志不要反复覆盖配置journalctl -u vsftpd -n 100 --no-pager5. 验证结果5.1 服务端状态systemctl status vsftpd --no-pager ss -lntp | grep :21 firewall-cmd --list-services firewall-cmd --list-ports journalctl -u vsftpd -n 80 --no-pager预期服务为active (running)TCP 21 监听正常被动端口已放行日志无持续启动错误。5.2 配置核对grep -Ev ^#|^$ /etc/vsftpd/vsftpd.conf systemctl cat vsftpd rpm -q vsftpd确认没有重复冲突参数systemd 启动命令使用预期配置文件。5.3 客户端连接Linux 客户端lftp -u qwe ftp://10.1.100.101Windows 客户端Test-NetConnection 10.1.100.101 -Port 21 ftp 10.1.100.101登录后测试pwd ls cd upload put test.txt get test.txt cd ..5.4 被动模式验证lftp中执行set ftp:passive-mode true ls put test.txt服务端同时查看连接ss -ntp | grep vsftpd预期除 TCP 21 外还能看到配置范围内的数据连接端口。若能登录但ls卡住优先检查被动端口、防火墙和 NAT 地址。5.5 日志和权限验证tail -n 100 /var/log/xferlog tail -n 100 /var/log/vsftpd.log 2/dev/null namei -l /srv/ftp/qwe/upload ls -Zd /srv/ftp/qwe/upload ausearch -m AVC -ts recent•530 Login incorrect检查密码、PAM、ftpusers和user_list。•500 OOPS检查错误参数、重复选项和 chroot 根目录写权限。•550 Permission denied检查write_enable、目录权限和 SELinux。• 登录成功但目录列表超时检查被动端口范围、防火墙、NAT 和客户端模式。• FTPS 握手失败检查证书路径、私钥权限、协议版本及客户端是否使用显式 FTPS。

相关新闻

d2dx:暗黑破坏神2现代化的终极解决方案

d2dx:暗黑破坏神2现代化的终极解决方案

2026/7/29 17:29:17

d2dx:暗黑破坏神2现代化的终极解决方案 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 还在为经典《暗黑破坏神2…

5步彻底清理R3nzSkin换肤工具:英雄联盟皮肤修改器完全清除指南

5步彻底清理R3nzSkin换肤工具:英雄联盟皮肤修改器完全清除指南

2026/7/29 17:19:17

5步彻底清理R3nzSkin换肤工具:英雄联盟皮肤修改器完全清除指南 【免费下载链接】R3nzSkin Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3n/R3nzSkin R3nzSkin是一款广受欢迎的英雄联盟换肤工具,采用先进…

【企业级提示词安全白皮书】:基于NIST AI RMF 1.1标准的12项合规检查清单(附自动审计脚本)

【企业级提示词安全白皮书】:基于NIST AI RMF 1.1标准的12项合规检查清单(附自动审计脚本)

2026/7/29 17:19:17

更多请点击: https://kaifayun.com 第一章:提示词安全治理的合规基线与框架定位 提示词安全治理并非孤立的技术实践,而是融合法律合规、行业监管与工程落地的系统性工程。其核心在于锚定“合规基线”——即组织在开展大模型应用前必须满足的…

从零实现C++ vector:三指针模型、动态扩容与迭代器失效详解

从零实现C++ vector:三指针模型、动态扩容与迭代器失效详解

2026/7/29 18:39:35

1. 项目概述:为什么我们要亲手“造轮子”?在C的世界里,std::vector大概是每个开发者最早接触、使用最频繁的STL容器,没有之一。它用起来太顺手了:动态扩容、随机访问、连续存储,感觉就像是一个会自动变长的…

全球海岸线自动监测终极指南:如何使用CoastSat卫星影像提取海岸线变化数据

全球海岸线自动监测终极指南:如何使用CoastSat卫星影像提取海岸线变化数据

2026/7/29 18:39:35

全球海岸线自动监测终极指南:如何使用CoastSat卫星影像提取海岸线变化数据 【免费下载链接】CoastSat Global shoreline mapping tool from satellite imagery 项目地址: https://gitcode.com/gh_mirrors/co/CoastSat 想要从卫星影像中自动提取海岸线变化数据…

如何用Trippy网络诊断工具解决生产环境路由问题:完整实战指南

如何用Trippy网络诊断工具解决生产环境路由问题:完整实战指南

2026/7/29 18:39:35

如何用Trippy网络诊断工具解决生产环境路由问题:完整实战指南 【免费下载链接】trippy A network diagnostic tool 项目地址: https://gitcode.com/GitHub_Trending/tr/trippy Trippy是一款现代化的网络诊断工具,它巧妙融合了traceroute和ping的…

如何用Eventuate实现事件协作?手把手教你构建分布式业务流程

如何用Eventuate实现事件协作?手把手教你构建分布式业务流程

2026/7/29 18:39:35

如何用Eventuate实现事件协作?手把手教你构建分布式业务流程 【免费下载链接】eventuate Global-scale event sourcing and event collaboration with causal consistency (This project is in maintenance mode. Only critical bugs will be fixed, but there is n…

3种风格任选:达尔文.skill自动生成专业成果卡片教程

3种风格任选:达尔文.skill自动生成专业成果卡片教程

2026/7/29 18:39:35

3种风格任选:达尔文.skill自动生成专业成果卡片教程 【免费下载链接】darwin-skill 达尔文.skill —— 一个让你的Skill无限进化的系统:评估→改进→测试→保留或回滚 | Autoresearch-inspired autonomous skill optimization for Claude Code. Evaluate…

5分钟找回丢失密码:ArchivePasswordTestTool帮你轻松破解加密压缩包

5分钟找回丢失密码:ArchivePasswordTestTool帮你轻松破解加密压缩包

2026/7/29 18:19:19

5分钟找回丢失密码:ArchivePasswordTestTool帮你轻松破解加密压缩包 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 你是否曾经…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/28 13:30:18

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/28 16:04:36

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/28 16:04:35

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…

AI会议纪要怎么做?会议录音转文字加自动整理,三个月实测流程

AI会议纪要怎么做?会议录音转文字加自动整理,三个月实测流程

2026/7/29 0:08:23

打工人总是跑不掉要写会议纪要。 我在一家互联网公司,一周至少八场会:产品评审、数据复盘、项目同步、客户沟通,每场一小时起步。 以前的标准流程是开会拼命记→会后凭记忆补→整理成文档发群,结果经常记不全、记错、记串。 大概年…

重庆化龙桥老旧小区改造,怎么搞定夜景照明“不扰居”又能省成本?

重庆化龙桥老旧小区改造,怎么搞定夜景照明“不扰居”又能省成本?

2026/7/29 0:08:23

重庆化龙桥靠着嘉陵江,老小区多,最近几年城市更新做的勤,不少住户都反映过小区夜景亮了是好事,可有的灯太晃眼,半夜拉着窗帘都透光,睡不好觉。还有物业算账,这灯开一整晚,公摊电费蹭…

目标模糊、资源泛滥、进度失控,AI学习计划制定失败的3大隐形陷阱及救急方案

目标模糊、资源泛滥、进度失控,AI学习计划制定失败的3大隐形陷阱及救急方案

2026/7/29 0:08:23

更多请点击: https://codechina.net 第一章:目标模糊、资源泛滥、进度失控,AI学习计划制定失败的3大隐形陷阱及救急方案 目标模糊:学得越勤,离真实能力越远 当学习目标停留在“学会AI”或“搞懂大模型”这类宽泛表述…