温馨提示×

怎样配置Linux FTP用户

小樊
35
2026-07-06 04:34:19
栏目: 智能运维

在 Linux 上配置 FTP 用户,常见做法是使用 vsftpd(Very Secure FTP Daemon)Pure-FTPd。下面以 vsftpd 为例,从安装到配置、创建用户、权限控制一步步说明(适用于 CentOS / Rocky / Alma / RHEL / Ubuntu / Debian)。


一、安装 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

三、创建 FTP 用户

1️⃣ 创建用户(禁止 SSH 登录)

useradd -m -s /sbin/nologin ftpuser
passwd ftpuser

-s /sbin/nologin:禁止该用户通过 SSH 登录,仅用于 FTP


2️⃣ 设置 FTP 目录(推荐)

mkdir -p /data/ftp
chown ftpuser:ftpuser /data/ftp
chmod 755 /data/ftp

四、配置 vsftpd(核心)

编辑配置文件:

vim /etc/vsftpd/vsftpd.conf

✅ 常用推荐配置

# 基础
anonymous_enable=NO
local_enable=YES
write_enable=YES

# 被动模式(云服务器必须)
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

# 用户限制
chroot_local_user=YES
allow_writeable_chroot=YES

# 安全
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list

# 日志
xferlog_enable=YES
log_ftp_protocol=YES

五、允许 FTP 用户登录

编辑用户白名单:

vim /etc/vsftpd/user_list

添加:

ftpuser

六、放行防火墙端口

firewalld(CentOS / Rocky)

firewall-cmd --permanent --add-port=21/tcp
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

七、云服务器额外注意(非常重要)

安全组放行端口

  • TCP 21
  • TCP 30000–31000

否则客户端会 能连上但列不出目录


八、测试 FTP

本地测试

ftp localhost

Windows / FileZilla

  • 主机:服务器 IP
  • 用户:ftpuser
  • 端口:21
  • 模式:被动(Passive)

九、常见错误与解决

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

✅ 解决:

allow_writeable_chroot=YES

❌ 能登录但无法上传

✅ 检查:

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

❌ 被动模式卡住

✅ 检查:

  • 防火墙
  • 云安全组
  • pasv_address(公网 IP)
pasv_address=公网IP

十、进阶(可选)

✅ 虚拟用户(更安全)
✅ 限制用户只能访问指定目录
✅ 使用 SSL/TLS 加密 FTP(FTPS)
✅ 用 Pure-FTPd 替代 vsftpd


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

  • ✅ 系统版本(CentOS 7 / Rocky / Ubuntu 22.04)
  • ✅ 是否云服务器
  • ✅ 是否需要 只读 / 只上传 / 多用户隔离

我可以给你一份 完全可用的定制配置

0