温馨提示×

怎样配置linux ftpserver权限

小樊
33
2026-09-17 09:46:48
栏目: 智能运维

下面按常见场景给你讲一下 Linux 上 FTP 服务器(以 vsftpd 为例,最常用)的权限配置方法,包括用户隔离、目录权限、写权限、匿名权限等。


一、安装 vsftpd(如未安装)

# CentOS / RHEL
yum install -y vsftpd

# Ubuntu / Debian
apt install -y vsftpd

启动并设置开机自启:

systemctl start vsftpd
systemctl enable vsftpd

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

1️⃣ 匿名用户(anonymous)

适合 只读公开下载

2️⃣ 系统本地用户(local user)

使用 Linux 系统账号登录,权限 = Linux 文件权限

3️⃣ 虚拟用户(推荐生产环境)

多个 FTP 账号,但不对应系统账号,更安全


三、基础权限配置(vsftpd.conf)

配置文件位置:

/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

✅ 用户只能访问 /home/用户名
✅ 有写权限(上传、删除)


四、目录与 Linux 权限配合(重点)

FTP 权限 = vsftpd 配置 + Linux 目录权限

示例

useradd ftpuser
passwd ftpuser

mkdir /home/ftpuser/upload
chown ftpuser:ftpuser /home/ftpuser/upload
chmod 755 /home/ftpuser
chmod 775 /home/ftpuser/upload

说明:

  • 755:用户可读可执行
  • 775:组可写
  • FTP 写失败,90% 是 Linux 目录权限问题

五、禁用用户离开家目录(安全)

chroot_local_user=YES

如果用户需要写:

allow_writeable_chroot=YES

六、匿名 FTP 权限配置

anonymous_enable=YES
anon_root=/var/ftp
anon_upload_enable=NO
anon_mkdir_write_enable=NO

只读匿名下载目录:

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

七、虚拟用户(推荐)

1️⃣ 创建虚拟用户文件

vim /etc/vsftpd/vusers.txt

内容:

user1
password1
user2
password2

2️⃣ 生成数据库

db_load -T -t hash -f /etc/vsftpd/vusers.txt /etc/vsftpd/vusers.db

3️⃣ PAM 配置

vim /etc/pam.d/vsftpd
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers

4️⃣ vsftpd 配置

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

八、常见问题排查

FTP 能登录但不能上传

  • 检查 write_enable=YES
  • 检查目录 chmod / chown
  • 检查 SELinux

SELinux 导致失败

setsebool -P ftpd_full_access on

防火墙

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

九、安全建议(生产环境)

✅ 不使用匿名写
✅ 使用虚拟用户
✅ 启用 chroot
✅ 限制被动端口范围
✅ 配合 TLS(FTPS)


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

  • 使用的 Linux 发行版
  • 是否要 匿名 / 账号 / 虚拟用户
  • 是否需要 上传 / 只下载

我可以直接给你一套可用的完整配置

0