在CentOS系统中架设FTP服务器,通常使用vsftpd(Very Secure FTP Daemon)软件,它是一款轻量级、高性能且安全的FTP服务程序,以下是详细的架设步骤及相关配置说明。

安装vsftpd服务
首先需要通过yum包管理器安装vsftpd,打开终端,执行以下命令:
sudo yum update -y # 更新系统软件包 sudo yum install vsftpd -y # 安装vsftpd服务
安装完成后,启动vsftpd服务并设置为开机自启:
sudo systemctl start vsftpd sudo systemctl enable vsftpd
可通过systemctl status vsftpd检查服务状态,确保显示“active (running)”。
配置防火墙与SELinux
CentOS默认启用防火墙和SELinux,需要开放FTP相关端口,FTP服务默认使用21端口,被动模式还需指定端口范围。

- 开放防火墙端口:
sudo firewall-cmd --permanent --add-service=ftp # 添加FTP服务到防火墙规则 sudo firewall-cmd --permanent --add-port=21/tcp # 开放21端口 sudo firewall-cmd --reload # 重新加载防火墙配置
- 配置SELinux:
若SELinux enforcing模式阻止FTP访问,需执行以下命令:
sudo setsebool -P ftpd_full_access on # 允许FTP目录访问
可通过
getsebool -a | grep ftpd验证设置是否生效。
修改vsftpd配置文件
vsftpd的主配置文件为/etc/vsftpd/vsftpd.conf,建议先备份原文件:
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
使用vi或nano编辑器打开配置文件,根据需求修改以下关键参数:
| 参数 | 说明 | 推荐值 |
|---|---|---|
| anonymous_enable | 是否允许匿名用户访问 | NO(禁止匿名) |
| local_enable | 是否允许本地用户登录 | YES(允许) |
| write_enable | 是否允许上传文件 | YES(允许) |
| chroot_local_user | 是否限制本地用户仅能访问主目录 | YES(安全限制) |
| allow_writeable_chroot | 是否允许被限制在主目录的用户写文件 | YES(需配合chroot_local_user) |
| pasv_enable | 是否启用被动模式 | YES(推荐) |
| pasv_min_port | 被动模式最小端口 | 10000 |
| pasv_max_port | 被动模式最大端口 | 10100 |
| user_config_dir | 用户自定义配置目录路径 | (可选,如/etc/vsftpd_user_conf) |
修改完成后保存文件,重启vsftpd服务使配置生效:

sudo systemctl restart vsftpd
创建FTP用户并设置权限
- 创建系统用户:
假设创建名为
ftpuser的用户,主目录为/home/ftpuser:sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser # 创建禁止登录的用户 sudo passwd ftpuser # 设置用户密码
- 设置目录权限:
确保用户对主目录具有读写权限:
sudo chmod 755 /home/ftpuser sudo chown ftpuser:ftpuser /home/ftpuser
- 限制用户访问特定目录(可选):
若需将用户限制在指定目录(如
/var/www/ftp),可创建用户时指定主目录,或通过软链接实现:sudo mkdir -p /var/www/ftp sudo useradd -m -d /var/www/ftp ftpuser # 重新设置用户主目录
配置匿名访问(可选)
若需允许匿名访问,修改vsftpd.conf中的anonymous_enable=YES,并设置匿名用户权限:
anon_upload_enable=YES # 允许匿名上传 anon_mkdir_write_enable=YES # 允许匿名创建目录 anon_umask=022 # 匿名用户创建文件的默认权限掩码
匿名用户的主目录默认为/var/ftp,需确保该目录权限为755,且ftp用户(匿名用户)对目录有写权限。
常见问题排查
-
无法连接FTP服务器:
- 检查防火墙和SELinux设置是否正确开放端口。
- 确认vsftpd服务状态正常(
systemctl status vsftpd)。 - 检查客户端是否使用了正确的IP地址和端口(被动模式需检查端口范围是否开放)。
-
用户无法上传文件:
- 确认
write_enable=YES已启用。 - 检查用户对目标目录的写权限(
ls -ld /目录路径)。 - 若启用
chroot_local_user,确保用户主目录不属于root(可执行sudo chown ftpuser:ftpuser /home/ftpuser)。
- 确认
相关问答FAQs
问题1:如何限制FTP用户只能访问特定目录,而不能切换到其他目录?
解答:通过设置chroot_local_user=YES可将用户限制在其主目录内,若用户主目录为/home/ftpuser,需确保该目录及其所有上级目录的权限设置正确(主目录权限为755,文件权限为644),若使用SELinux,需执行setsebool -P ftpd_full_access on允许FTP访问受限目录。
问题2:如何配置FTP服务器支持IPv6连接?
解答:在vsftpd.conf中添加以下参数:
listen=YES # 监听IPv4地址 listen_ipv6=YES # 监听IPv6地址
若需同时支持IPv4和IPv6,可将listen设置为NO,启用listen_address6指定IPv6地址(如listen_address6=::),修改后重启vsftpd服务,并在防火墙中开放IPv6的FTP服务(firewall-cmd --permanent --add-service=ftp)。
