温馨提示×

CentOS如何设置FTP权限

小樊
52
2026-08-30 04:39:58
栏目: 智能运维

在 CentOS 上设置 FTP 权限,通常包括 安装 FTP 服务、配置用户权限、目录权限、防火墙和 SELinux。下面以 vsftpd(最常见的 FTP 服务器) 为例,按步骤说明。


一、安装 vsftpd

yum install -y vsftpd

启动并设置开机自启:

systemctl start vsftpd
systemctl enable vsftpd

二、FTP 用户权限设置(关键)

1️⃣ 创建 FTP 用户(推荐方式)

useradd -d /data/ftp -s /sbin/nologin ftpuser
passwd ftpuser
  • -d:指定 FTP 根目录
  • -s /sbin/nologin:禁止 SSH 登录(更安全)

2️⃣ 设置 FTP 目录权限

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

✅ 原则:

  • 用户要对目录有 读 + 写 + 执行 权限
  • 上级目录不能有 写权限 + 其他用户写权限(vsftpd 安全限制)

三、vsftpd 权限配置(/etc/vsftpd/vsftpd.conf)

编辑配置文件:

vim /etc/vsftpd/vsftpd.conf

✅ 常用权限配置

# 禁止匿名登录
anonymous_enable=NO

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

# 允许上传
write_enable=YES

# 本地用户限制在主目录
chroot_local_user=YES

# 允许写 chroot(CentOS 7+ 必须)
allow_writeable_chroot=YES

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

重启服务:

systemctl restart vsftpd

四、防火墙设置

1️⃣ 开放 FTP 端口

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

五、SELinux 设置(非常重要)

CentOS 默认开启 SELinux,不设置会导致 能登录但不能上传。

查看 SELinux 状态

getenforce

允许 FTP 访问

setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on

如果仍不行,可临时测试:

setenforce 0

⚠️ 生产环境不建议永久关闭 SELinux


六、测试 FTP

使用命令行测试

ftp 服务器IP

或使用工具:

  • FileZilla
  • WinSCP

七、常见问题速查

❌ 530 Login incorrect

  • 用户名/密码错误
  • /sbin/nologin 未加入 /etc/shells
echo "/sbin/nologin" >> /etc/shells

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

allow_writeable_chroot=YES

❌ 能登录但不能上传

  • 检查目录权限
  • 检查 SELinux
  • 检查 write_enable=YES

八、权限总结(速记)

项目 设置
FTP 用户 nologin
目录属主 与 FTP 用户一致
目录权限 755
上传权限 write_enable=YES
SELinux 必须开启放行

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

  • CentOS 版本(6 / 7 / 8 / Stream)
  • 是否只允许某一用户访问
  • 是否需要 只读 / 只写 / 匿名访问

我可以给你一套 完全贴合你场景的 FTP 权限方案。

0 踩