温馨提示×

怎样管理Linux FTP权限

小樊
67
2026-07-06 05:19:20
栏目: 智能运维

在 Linux 上管理 FTP 权限,核心在于用户权限 + 目录权限 + FTP 服务配置三者配合。下面以最常见的 vsftpd 为例,系统、完整地说明。


一、常见 FTP 服务

  • vsftpd(最常用,CentOS / RHEL / Ubuntu 默认)
  • ProFTPD
  • Pure-FTPd

下面以 vsftpd 为主说明,其他原理类似。


二、FTP 用户类型与权限管理

1️⃣ 系统用户(推荐)

直接使用 Linux 系统用户登录 FTP。

# 创建用户
useradd ftpuser
passwd ftpuser

限制用户只能访问家目录(重要)

编辑 /etc/vsftpd/vsftpd.conf:

chroot_local_user=YES
allow_writeable_chroot=YES

✅ 效果:

  • 用户登录后只能看到 /home/ftpuser
  • 不能切换到 /etc、/root 等系统目录

2️⃣ 匿名用户(慎用)

允许 anonymous 登录。

anonymous_enable=YES
anon_root=/var/ftp

⚠️ 安全风险高,生产环境不建议开启。


3️⃣ 虚拟用户(企业常用)

  • 用户不占用系统账号
  • 权限通过映射系统用户实现

流程简述:

  1. 创建虚拟用户数据库(PAM)
  2. 映射到一个系统用户(如 virtftp)
  3. 为每个虚拟用户单独配置目录和权限

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


三、目录权限管理(非常关键)

1️⃣ Linux 文件权限基础

r = 读
w = 写
x = 进入目录

示例:

drwxr-x--- ftpuser ftpuser /home/ftpuser

2️⃣ 常见目录权限设置

只允许上传,不允许删除

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

允许上传和删除

chmod 775 /data/ftp

禁止访问上级目录

chmod 700 /home/ftpuser

四、vsftpd 关键权限配置项

1️⃣ 上传权限

write_enable=YES

2️⃣ 匿名上传

anon_upload_enable=YES
anon_mkdir_write_enable=YES

⚠️ 匿名目录必须可写:

chown ftp /var/ftp/pub

3️⃣ 限制用户访问权限

userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
  • NO:只允许列表中的用户
  • YES:禁止列表中的用户

五、SELinux 与防火墙(常被忽略)

1️⃣ SELinux(CentOS / RHEL)

查看状态:

getenforce

允许 FTP 访问家目录:

setsebool -P ftp_home_dir on

允许上传:

setsebool -P allow_ftpd_full_access on

2️⃣ 防火墙

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

六、被动模式(Port / PASV)

推荐配置(云服务器必开)

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

防火墙放行:

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

七、权限管理最佳实践 ✅

✅ 使用 系统用户 + chroot
✅ 禁止 root 登录 FTP
✅ 禁用匿名用户
✅ 目录权限最小原则
✅ 使用被动模式
✅ 配合 SELinux / 防火墙
✅ 日志审计:

/var/log/vsftpd.log

八、快速检查清单

项目 是否
用户只能访问指定目录 ✅
上传 / 下载权限明确 ✅
SELinux 配置正确 ✅
防火墙放行 ✅
匿名访问关闭 ✅

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

  • 使用的 Linux 发行版
  • vsftpd / ProFTPD / Pure-FTPd
  • 是 内网 / 云服务器
  • 希望 只读 / 只上传 / 读写

我可以给你一份可直接用的配置文件。

0 踩