温馨提示×

centos怎样配置ftpserver

小樊
44
2026-07-08 20:10:27
栏目: 智能运维

在 CentOS 上配置 FTP 服务器(以 vsftpd 为例,最常用、稳定)可以按下面步骤来。我分别给你 匿名访问本地用户访问 两种常见配置方式,并顺带说明 防火墙 / SELinux 注意事项。


一、安装 vsftpd

# CentOS 7/8
yum install -y vsftpd

# CentOS Stream / 新版
dnf install -y vsftpd

启动并设置开机自启:

systemctl start vsftpd
systemctl enable vsftpd

二、基本配置文件

配置文件路径:

/etc/vsftpd/vsftpd.conf

先备份:

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

三、常用配置示例

✅ 方式一:允许本地用户登录(最常用)

编辑配置文件:

vim /etc/vsftpd/vsftpd.conf

推荐配置:

# 禁止匿名登录
anonymous_enable=NO

# 允许本地用户
local_enable=YES

# 允许上传
write_enable=YES

# 本地用户限制在家目录
chroot_local_user=YES

# 允许写 chroot(CentOS 7+ 必须)
allow_writeable_chroot=YES

# 被动模式(推荐)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

# 日志
xferlog_enable=YES

重启服务:

systemctl restart vsftpd

✅ 方式二:匿名 FTP(只读)

anonymous_enable=YES
anon_root=/var/ftp
local_enable=NO
write_enable=NO

目录权限:

chmod 755 /var/ftp

四、创建 FTP 用户(本地用户方式)

useradd ftpuser
passwd ftpuser

限制只能 FTP,不能 SSH 登录(可选):

usermod -s /sbin/nologin ftpuser

五、防火墙配置(非常重要)

firewalld(CentOS 7+)

firewall-cmd --permanent --add-service=ftp
firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload

六、SELinux 配置(很多人会踩坑)

查看状态:

getenforce

如果是 Enforcing,需要设置:

setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on

如果还是连不上,可临时测试:

setenforce 0

⚠️ 生产环境不建议直接关闭 SELinux。


七、客户端连接测试

ftp 服务器IP

或使用工具:

  • FileZilla
  • WinSCP
  • lftp

八、常见问题排查

问题 原因
530 Login incorrect 用户名/密码错误 or SELinux
500 OOPS: chroot 家目录权限不对
连接超时 防火墙 / 被动端口
无法上传 write_enable=NO

九、进阶(可选)

如果你需要:

  • FTPS(FTP over SSL)
  • 虚拟用户
  • 限速 / 配额
  • vsftpd + MySQL

可以告诉我你的 CentOS 版本和使用场景,我可以给你更精确的配置方案。

0