温馨提示×

linux ftpserver权限怎么配

小樊
48
2026-09-23 12:32:32
栏目: 智能运维

在 Linux 上配置 FTP 服务器权限,主要取决于你用的是哪种 FTP 服务软件。最常见的是 vsftpd(Very Secure FTP Daemon)。下面以 vsftpd 为主,系统权限 + FTP 配置一起讲。


一、先明确几个“权限层级”

FTP 权限 = Linux 系统权限 + vsftpd 配置限制

  1. 系统用户权限(最底层)
    • 用户是否有目录读/写权限
    • 文件属主、属组、chmod
  2. vsftpd 配置权限
    • 是否允许写
    • 是否限制在家目录
    • 是否允许匿名
  3. SELinux / 防火墙(常被忽略)
    • CentOS/RHEL 常见坑

二、vsftpd 基础安装

# Debian / Ubuntu
apt install vsftpd

# CentOS / RHEL
yum install vsftpd

配置文件位置:

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

三、常见权限配置示例

1️⃣ 禁止匿名,仅系统用户登录(最常用)

anonymous_enable=NO
local_enable=YES
write_enable=YES

2️⃣ 限制用户只能访问家目录(防止乱跑)

chroot_local_user=YES
allow_writeable_chroot=YES

⚠️ 如果不加 allow_writeable_chroot=YES,家目录可写会报错


3️⃣ 给用户指定 FTP 目录并授权

例如给用户 ftpuser 使用 /data/ftp

useradd -d /data/ftp ftpuser
passwd ftpuser

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

如需可上传:

chmod 775 /data/ftp

4️⃣ 匿名 FTP(只读)

anonymous_enable=YES
anon_root=/var/ftp
write_enable=NO

目录权限:

chown root:root /var/ftp
chmod 755 /var/ftp

四、虚拟用户(推荐生产环境)

不直接用系统用户,更安全。

步骤简述

  1. 创建虚拟用户文件
  2. 用 db_load 生成数据库
  3. 配置 PAM
  4. 每个虚拟用户映射到一个系统用户
  5. 在 vsftpd.conf 中指定权限

示例:

guest_enable=YES
guest_username=ftpvuser
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/user_conf

五、SELinux(CentOS/RHEL 必看)

如果登录正常但不能上传:

setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on

或临时关闭测试:

setenforce 0

六、防火墙

#  passive mode
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload

七、快速排查清单

✅ 用户是否能本地登录
✅ 目录属主是否正确
✅ vsftpd 是否允许 write
✅ 是否 chroot
✅ SELinux 是否拦截


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

  • 用的是 Ubuntu / CentOS / 其他
  • 是 匿名 / 系统用户 / 虚拟用户
  • 想要 只读 / 可上传 / 多用户隔离

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

0 踩