温馨提示×

linux ftpserver怎么权限设

小樊
44
2026-09-08 06:11:20
栏目: 智能运维

下面按**最常见的 Linux FTP 服务端(vsftpd)**给你讲,其他服务(proftpd / pure-ftpd)思路类似。


一、先明确:FTP 权限 ≠ 只有 FTP 配置

FTP 权限 = Linux 系统用户权限 + FTP 服务配置限制

也就是说:

  • 用户能不能进目录 → 看 Linux 目录权限
  • 能不能上传/下载 → 看 FTP 配置
  • 能不能切目录 → 看 chroot 设置

二、vsftpd 常见权限设置

1️⃣ 安装 vsftpd

# CentOS / Rocky
yum install vsftpd -y

# Ubuntu / Debian
apt install vsftpd -y

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

不要用 root

useradd -m ftpuser
passwd ftpuser

指定家目录(可选):

usermod -d /data/ftp ftpuser

3️⃣ 目录权限(非常关键)

假设 FTP 根目录是 /data/ftp

chown -R ftpuser:ftpuser /data/ftp
chmod 755 /data/ftp
  • 上传目录:
mkdir /data/ftp/upload
chmod 777 /data/ftp/upload

⚠️ 不要整个根目录 777,不安全


4️⃣ vsftpd 核心配置(/etc/vsftpd/vsftpd.conf)

编辑:

vim /etc/vsftpd/vsftpd.conf

基础权限

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

限制用户只能待在自己目录(推荐)

chroot_local_user=YES
allow_writeable_chroot=YES

限制某些用户不能登录(可选)

userlist_enable=YES
userlist_deny=YES

/etc/vsftpd/user_list 里加用户名


5️⃣ 虚拟用户(更安全,企业常用)

如果你不想给系统真实用户:

  • db_load 建虚拟用户
  • 映射到一个系统用户(如 vftp
  • 每个虚拟用户可以不同权限

这个稍微复杂,需要我可以单独写一版。


三、SELinux / 防火墙(很多人卡这里)

SELinux(CentOS/RHEL)

setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on

防火墙

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

四、被动模式(PASV,必开)

否则很多客户端连不上:

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

防火墙也要放端口:

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

五、重启服务

systemctl restart vsftpd
systemctl enable vsftpd

六、常见权限问题速查

问题 原因
530 Login incorrect 用户被禁 / PAM 问题
550 Permission denied 目录无写权限
500 OOPS chroot 根目录有写权限但不允许
不能列目录 PASV 端口未开

如果你告诉我:

  • 用的 哪个 FTP 服务
  • 系统版本
  • 想实现什么(只能上传 / 只能下载 / 多用户隔离)

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

0