温馨提示×

linux ftpserver权限怎么设

小樊
36
2026-09-02 05:45:51
栏目: 智能运维

在 Linux 上搭建 FTP 服务器(常见如 vsftpd) 时,权限设置通常涉及 系统用户权限、目录权限、FTP 配置限制 三部分。下面以最常见的 vsftpd 为例说明。


一、FTP 用户类型与权限模型

1️⃣ 系统用户 FTP(最常用)

  • FTP 账号 = Linux 系统用户
  • 权限由 Linux 文件权限 + vsftpd 配置 共同决定

2️⃣ 虚拟用户 FTP(更安全)

  • 用户不存在于系统
  • 权限通过映射用户 + 配置控制

二、基础目录与权限设置(系统用户)

示例需求

  • 用户:ftpuser
  • 根目录:/home/ftpuser
  • 只能访问自己目录,不能越权

1️⃣ 创建用户

useradd -m ftpuser
passwd ftpuser

2️⃣ 设置目录权限

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

⚠️ 注意

  • FTP 用户 对根目录不能有写权限(vsftpd 安全限制)
  • 上传目录要单独建
mkdir /home/ftpuser/upload
chown ftpuser:ftpuser /home/ftpuser/upload
chmod 755 /home/ftpuser/upload

三、vsftpd 关键权限配置

配置文件一般在:

/etc/vsftpd/vsftpd.conf

常用权限参数

# 禁止匿名
anonymous_enable=NO

# 允许本地用户
local_enable=YES

# 允许写操作
write_enable=YES

# 限制用户在家目录
chroot_local_user=YES

# 允许用户有写权限(新版必须)
allow_writeable_chroot=YES

上传权限

# 上传文件权限
local_umask=022

四、常见问题与解决方案

❌ 530 Login incorrect

原因:

  • 用户被 /etc/vsftpd/user_listftpusers 禁止 解决:
vim /etc/vsftpd/ftpusers
vim /etc/vsftpd/user_list

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

解决(二选一):

  1. 根目录改为只读
  2. 配置加:
allow_writeable_chroot=YES

✅ 只允许某用户 FTP

userlist_enable=YES
userlist_deny=NO

并在:

/etc/vsftpd/user_list

写入允许用户


五、虚拟用户权限(进阶)

适合多用户、高安全场景:

  • 映射为系统用户(如 vftp)
  • 每个虚拟用户可单独配置权限

目录示例:

/var/ftp/vuser1
/var/ftp/vuser2

六、SELinux 注意(CentOS / RHEL)

getsebool -a | grep ftp
setsebool -P ftpd_full_access on

七、推荐安全做法 ✅

  • 不使用匿名 FTP
  • 使用 chroot
  • 限制可登录用户
  • 配合防火墙(21 + 被动端口)
  • 日志监控:
/var/log/vsftpd.log

如果你告诉我:

  • 用的 哪个 FTP 软件
  • 公网 / 内网
  • 只读 / 上传 / 多用户

我可以给你一份可直接用的配置模板

0