温馨提示×

linux ftpserver如何设权限

小樊
41
2026-09-26 10:38:26
栏目: 智能运维

在 Linux 上搭建 FTP 服务器(常见如 vsftpd、ProFTPD、Pure-FTPd)时,“设权限”通常包含以下几个层面:

  1. 系统用户 / 目录权限(Linux 文件权限)
  2. FTP 服务本身配置(读/写/访问范围)
  3. 虚拟用户权限(如 vsftpd + PAM)
  4. SELinux / 防火墙影响

下面以 最常用的 vsftpd 为例说明,并补充通用思路。


一、基于系统用户的 FTP 权限(vsftpd)

1. 创建 FTP 用户

useradd -m ftpuser
passwd ftpuser

2. 设置目录权限(Linux 层面)

mkdir -p /data/ftp
chown ftpuser:ftpuser /data/ftp
chmod 755 /data/ftp
  • 755:用户可读写执行,其他人只读
  • 上传目录可设 775 或 777(不推荐 777)

3. vsftpd 配置文件(/etc/vsftpd/vsftpd.conf)

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

重启服务:

systemctl restart vsftpd

二、限制用户只能访问自己的目录(chroot)

锁定所有本地用户

chroot_local_user=YES

例外(允许某些用户跳出)

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

chroot_list 中的用户 不被锁定


三、只读 / 只写权限控制

禁止上传(只读)

write_enable=NO

禁止删除

vsftpd 本身不支持“禁止删除但允许上传”,可通过:

  • 使用 虚拟用户 + 不同配置
  • 或结合 文件系统权限 + ACL

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

示例结构

/etc/vsftpd/virtual/
  ├── user1
  └── user2

每个用户单独配置:

guest_enable=YES
guest_username=ftpvuser
user_config_dir=/etc/vsftpd/virtual

user1 文件:

local_root=/data/ftp/user1
write_enable=YES

user2 文件:

local_root=/data/ftp/user2
write_enable=NO

五、ACL 精细权限(高级)

setfacl -m u:ftpuser:rwx /data/ftp/upload
setfacl -m u:ftpuser:r-x /data/ftp/download

六、SELinux 与防火墙

SELinux

setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on

防火墙

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

七、不同 FTP 软件简要对比

软件 特点
vsftpd 安全、简单、主流
ProFTPD 类 Apache 配置,灵活
Pure-FTPd 虚拟用户方便

八、常见需求示例

✅ 只能下载不能上传
✅ 不同用户不同目录
✅ 限制 IP 访问
✅ FTP + TLS 加密

如果你能告诉我:

  • 使用的 FTP 软件
  • 是 系统用户还是虚拟用户
  • 具体需求(只读 / 多用户 / 隔离)

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

0 踩