在 Linux 上配置 FTP 用户,常见做法是使用 vsftpd(Very Secure FTP Daemon) 或 Pure-FTPd。下面以 vsftpd 为例,从安装到配置、创建用户、权限控制一步步说明(适用于 CentOS / Rocky / Alma / RHEL / Ubuntu / Debian)。
yum install -y vsftpd
apt update
apt install -y vsftpd
systemctl start vsftpd
systemctl enable vsftpd
查看状态:
systemctl status vsftpd
useradd -m -s /sbin/nologin ftpuser
passwd ftpuser
-s /sbin/nologin:禁止该用户通过 SSH 登录,仅用于 FTP
mkdir -p /data/ftp
chown ftpuser:ftpuser /data/ftp
chmod 755 /data/ftp
编辑配置文件:
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
编辑用户白名单:
vim /etc/vsftpd/user_list
添加:
ftpuser
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 30000:31000 -j ACCEPT
✅ 安全组放行端口
否则客户端会 能连上但列不出目录
ftp localhost
✅ 解决:
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
如果你愿意,可以告诉我:
我可以给你一份 完全可用的定制配置。