温馨提示×

FTP服务在Linux怎么配置

小樊
35
2026-07-06 04:26:20
栏目: 智能运维

在 Linux 上配置 FTP 服务,最常用的是 vsftpd(Very Secure FTP Daemon)。下面我按 “安装 → 配置 → 用户 → 防火墙 → 测试” 的顺序给你一套通用、实用、可落地的配置流程,适用于 CentOS / Rocky / Alma / RHEL / Ubuntu / Debian


一、安装 FTP 服务(vsftpd)

✅ CentOS / Rocky / Alma / RHEL

yum install -y vsftpd

✅ Ubuntu / Debian

apt update
apt install -y vsftpd

二、启动并设置开机自启

systemctl start vsftpd
systemctl enable vsftpd

查看状态:

systemctl status vsftpd

三、vsftpd 核心配置文件

配置文件路径:

/etc/vsftpd/vsftpd.conf   # CentOS/RHEL
/etc/vsftpd.conf          # Ubuntu

四、常见配置说明(重点)

编辑配置:

vim /etc/vsftpd/vsftpd.conf

✅ 1. 允许本地用户登录

local_enable=YES

✅ 2. 允许上传(写权限)

write_enable=YES

✅ 3. 禁止匿名登录(推荐)

anonymous_enable=NO

✅ 4. 限制用户只能访问自己的家目录(重要)

chroot_local_user=YES
allow_writeable_chroot=YES

✅ 5. 被动模式(云服务器必开)

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

云服务器 必须配置被动模式,否则客户端连不上。


五、创建 FTP 用户

创建用户

useradd ftpuser
passwd ftpuser

设置家目录(可选)

mkdir -p /data/ftp
usermod -d /data/ftp ftpuser

设置权限

chown -R ftpuser:ftpuser /data/ftp
chmod 755 /data/ftp

六、防火墙配置

✅ firewalld(CentOS / Rocky)

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

✅ iptables

iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 30000:31000 -j ACCEPT

七、SELinux 配置(CentOS 常见坑)

查看状态:

getenforce

临时关闭(不推荐生产)

setenforce 0

✅ 正确做法(推荐)

setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on

八、重启 vsftpd

systemctl restart vsftpd

九、客户端测试

Linux 命令行

ftp 服务器IP

Windows

  • FileZilla
  • WinSCP
  • 资源管理器:ftp://IP

十、常见问题排查

❌ 530 Login incorrect

  • 用户名 / 密码错误
  • /etc/shells 中无该用户 shell

❌ 500 OOPS: chroot

allow_writeable_chroot=YES

❌ 能连但不能列目录

  • 被动端口未放行
  • 防火墙 / 安全组没开

十一、安全建议(重要)

✅ 禁止 root 登录
✅ 使用 SFTP(SSH) 替代 FTP(更安全)
✅ 限制 IP 访问
✅ 定期更新系统


如果你愿意,可以告诉我:

  • ✅ 系统版本(CentOS 7 / Rocky 9 / Ubuntu 22.04)
  • ✅ 是否在 云服务器
  • ✅ 是否必须 FTP(还是可以用 SFTP)

我可以给你 完全针对你环境的配置方案

0