温馨提示×

怎样设置Linux FTP用户

小樊
37
2026-07-06 05:01:17
栏目: 智能运维

在 Linux 上设置 FTP 用户,常见做法是使用 vsftpd(最常用、稳定)。下面我按最常用场景给你一个完整示例,适合新手直接照做。


一、安装 vsftpd

CentOS / Rocky / AlmaLinux

yum install -y vsftpd

Ubuntu / Debian

apt update
apt install -y vsftpd

二、创建 FTP 用户

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

useradd -m -s /sbin/nologin ftpuser

2️⃣ 设置密码

passwd ftpuser

三、配置 vsftpd

编辑配置文件:

vim /etc/vsftpd/vsftpd.conf   # CentOS
# 或
vim /etc/vsftpd.conf          # Ubuntu

✅ 推荐基础配置

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022

chroot_local_user=YES
allow_writeable_chroot=YES

pasv_min_port=30000
pasv_max_port=31000

四、设置 FTP 用户目录权限

chown -R ftpuser:ftpuser /home/ftpuser
chmod 755 /home/ftpuser

如果你希望用户只能访问自己的目录(推荐):

chroot_local_user=YES

五、放行防火墙端口

1️⃣ FTP 控制端口

# CentOS
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload

# Ubuntu
ufw allow 21/tcp

2️⃣ 被动模式端口

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

六、启动 vsftpd

systemctl enable vsftpd
systemctl start vsftpd

查看状态:

systemctl status vsftpd

七、测试 FTP

本地测试

ftp localhost

Windows / FileZilla 连接

  • 主机:服务器 IP
  • 用户:ftpuser
  • 密码:你设置的密码
  • 模式:被动模式(推荐)

八、常见问题

❌ 530 Login incorrect

  • 用户被禁止登录
  • 检查:
grep ftpuser /etc/passwd
  • 或关闭 PAM 限制(不推荐生产环境):
pam_service_name=vsftpd

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

解决:

allow_writeable_chroot=YES

九、只给 FTP,不给 SSH(安全)

你已经用了:

/sbin/nologin

如果想更严格,可配合:

echo "/sbin/nologin" >> /etc/shells

十、进阶(可选)

  • 虚拟用户(更安全)
  • TLS/SSL 加密 FTP
  • 限制用户访问特定目录
  • 多用户不同权限

如果你告诉我: ✅ 系统版本
✅ 是否要加密(FTPS)
✅ 是否多用户

我可以给你定制配置方案

0