CentOS 6.9 作为一款经典的 Linux 发行版,尽管已进入生命周期末期,但在某些特定场景下仍被广泛使用,FTP(File Transfer Protocol)作为文件传输的基础协议,在 CentOS 6.9 系统中的配置与管理是系统管理员需要掌握的技能,本文将详细介绍在 CentOS 6.9 系统中搭建、配置及维护 FTP 服务器的完整流程,包括安装、权限设置、安全优化及常见问题排查,帮助用户高效实现文件传输需求。

安装 FTP 服务软件包
在 CentOS 6.9 系统中,常用的 FTP 服务器软件是 vsftpd(Very Secure FTP Daemon),其以安全性高、性能稳定著称,首先需要通过 yum 包管理器安装 vsftpd,执行以下命令更新系统软件包列表并安装 vsftpd:
sudo yum update -y sudo yum install vsftpd -y
安装完成后,启动 vsftpd 服务并设置开机自启:
sudo service vsftpd start sudo chkconfig vsftpd on
可通过 netstat -tuln | grep 21 命令检查 FTP 默认端口 21 是否监听,确认服务正常运行。
配置 vsftpd 核心参数
vsftpd 的配置文件位于 /etc/vsftpd/vsftpd.conf,需根据实际需求调整关键参数,以下是核心配置项的说明及建议值:
- 匿名访问控制:
anonymous_enable=NO:禁止匿名用户访问,提升安全性(默认为 YES,生产环境建议关闭)。 - 本地用户权限:
local_enable=YES:允许本地用户通过 FTP 登录。
write_enable=YES:开启本地用户的写权限(如需上传文件)。 - 用户目录限制:
chroot_local_user=YES:将用户限制在其主目录内,防止越权访问。
allow_writeable_chroot=YES:允许被限制在主目录的用户拥有写权限(需配合 vsftpd 3.2.0+ 版本,CentOS 6.9 默认支持)。 - 数据连接模式:
pasv_min_port=10000和pasv_max_port=10100:设置被动模式端口范围,避免防火墙拦截。
修改配置文件后,需重启 vsftpd 服务使配置生效:

sudo service vsftpd restart
创建 FTP 用户及权限管理
默认情况下,系统本地用户均可登录 FTP 服务器,若需创建专用 FTP 用户,可执行以下步骤:
- 添加用户:
sudo useradd -m -s /sbin/nologin ftpuser sudo passwd ftpuser
参数说明:
-m自动创建用户主目录,-s /sbin/nologin禁止用户通过 SSH 登录,仅允许 FTP 访问。 - 限制用户目录:
若需将用户限制在指定目录(如/var/ftp/share),可使用usermod命令:sudo usermod -d /var/ftp/share ftpuser
并确保目录权限设置正确(如
chown ftpuser:ftpuser /var/ftp/share)。
防火墙与 SELinux 配置
CentOS 6.9 默认启用防火墙(iptables)和 SELinux,需开放 FTP 相关端口以允许访问。
- 防火墙配置:
sudo iptables -I INPUT -p tcp --dport 21 -j ACCEPT sudo iptables -I INPUT -p tcp --dport 10000:10100 -j ACCEPT sudo service iptables save
- SELinux 配置:
若启用了 SELinux,需设置允许 FTP 服务读写文件:sudo setsebool -P ftpd_full_access on
或使用
semanage工具为用户目录添加 SELinux 上下文(需安装policycoreutils-python包)。
安全优化与维护建议
- 禁用匿名用户:确保
anonymous_enable=NO,避免恶意文件上传或资源占用。 - 启用日志审计:配置
xferlog_enable=YES和dual_log_enable=YES,记录文件传输日志,便于排查问题。 - 限制用户登录:通过
/etc/vsftpd/ftpusers文件(黑名单)或/etc/vsftpd/user_list文件禁止特定用户登录。 - 定期更新:尽管 CentOS 6.9 已停止维护,但仍建议通过第三方源(如 EPEL)获取安全补丁。
常见问题排查
- 无法连接 FTP 服务器:
- 检查防火墙和 SELinux 设置,确认端口开放。
- 验证 vsftpd 服务状态(
service vsftpd status)。 - 查看系统日志(
/var/log/secure或/var/log/vsftpd.log)定位错误原因。
- 用户无法上传文件:
- 确认
write_enable=YES已启用。 - 检查用户目录权限(如
755)和 SELinux 上下文(restorecon -R /home/username)。
- 确认
FAQs
Q1:如何禁止 FTP 用户通过 SSH 登录系统?
A:在创建用户时,通过 -s /sbin/nologin 参数指定用户默认 shell,useradd -m -s /sbin/nologin ftpuser,若用户已存在,可使用 usermod -s /sbin/nologin ftpuser 修改。
Q2:FTP 连接时提示“500 OOPS: vsftpd: refusing to run with writable root inside chroot()”如何解决?
A:该错误是由于 vsftpd 安全机制限制,禁止在 chroot 环境中拥有可写根目录,解决方法是在配置文件中添加 allow_writeable_chroot=YES(需 vsftpd 3.2.0+ 版本支持),或将用户主目录的权限修改为 555(chmod 555 /home/username)。