温馨提示×

怎么搭建Linux ftpserver

小樊
48
2026-07-17 19:53:23
栏目: 智能运维

下面给你一个**从零开始搭建 Linux FTP 服务器(以 vsftpd 为例)**的完整流程,适用于 CentOS / Rocky / Alma / RHEL 系列(Ubuntu/Debian 会稍作说明)。


一、选择 FTP 服务软件

常用方案:

软件 说明
vsftpd 最常用、安全、稳定(推荐)
proftpd 功能多,配置复杂
pure-ftpd 轻量

本文使用 vsftpd


二、安装 vsftpd

1️⃣ CentOS / Rocky / Alma / RHEL

yum install -y vsftpd

2️⃣ Ubuntu / Debian

apt update
apt install -y vsftpd

三、启动并设置开机自启

systemctl start vsftpd
systemctl enable vsftpd

查看状态:

systemctl status vsftpd

四、基础配置(/etc/vsftpd/vsftpd.conf)

1️⃣ 备份原配置

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

2️⃣ 常用安全配置(推荐)

编辑:

vim /etc/vsftpd/vsftpd.conf

基础配置示例

# 禁止匿名登录
anonymous_enable=NO

# 允许本地用户登录
local_enable=YES

# 允许上传
write_enable=YES

# 本地用户权限掩码
local_umask=022

# 限制用户只能访问家目录(重要)
chroot_local_user=YES

# 允许写 chroot(新版本必须)
allow_writeable_chroot=YES

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

# 日志
xferlog_enable=YES

五、创建 FTP 用户(不使用 root)

1️⃣ 创建用户

useradd -m ftpuser
passwd ftpuser

2️⃣ 设置家目录权限(非常重要)

chown ftpuser:ftpuser /home/ftpuser
chmod 755 /home/ftpuser

⚠️ 不要给 777 权限


六、防火墙配置

1️⃣ 开放 FTP 端口

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

2️⃣ 如果你没用 firewalld

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

七、SELinux 设置(很多人卡在这里)

1️⃣ 查看状态

getenforce

2️⃣ 临时关闭(不推荐生产)

setenforce 0

3️⃣ ✅ 正确做法(推荐)

setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on

八、重启 vsftpd

systemctl restart vsftpd

九、测试 FTP

1️⃣ Linux 客户端测试

ftp 服务器IP

2️⃣ Windows

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

✅ 使用 被动模式(Passive)


十、常见问题排查

❌ 530 Login incorrect

  • 密码错误
  • /etc/shells 里没有该用户的 shell

❌ 500 OOPS: vsftpd: refusing to run with writable root inside chroot

allow_writeable_chroot=YES

❌ 能登录但列不出目录

  • 被动端口没放行
  • SELinux 没设置

十一、进阶(可选)

  • ✅ 开启 FTPS(FTP over SSL)
  • ✅ 虚拟用户
  • ✅ 限速 / 限连接数
  • ✅ 日志审计

如果你愿意,我可以:

  • 教你 搭建 FTPS
  • 给你 docker 版 FTP
  • 帮你 排查你现在报错

你是 CentOS 还是 Ubuntu? 我可以直接给你精准命令。

0