温馨提示×

Debian vsftp如何设置权限

小樊
51
2026-07-02 11:58:27
栏目: 智能运维

在 Debian 上配置 vsftpd(Very Secure FTP Daemon) 时,“权限”通常指 用户访问权限、目录权限、匿名权限、上传/下载权限,可以从 vsftpd 配置 和 Linux 文件系统权限 两个层面来理解。下面给你一个完整、常用的设置指南。


一、安装 vsftpd(Debian)

sudo apt update
sudo apt install vsftpd

启动并设置开机自启:

sudo systemctl enable vsftpd
sudo systemctl start vsftpd

二、vsftpd 主要权限配置项(核心)

配置文件位置:

/etc/vsftpd.conf

修改后重启:

sudo systemctl restart vsftpd

三、常见权限场景及配置

✅ 1. 禁止匿名用户(推荐)

anonymous_enable=NO

✅ 2. 允许本地用户登录

local_enable=YES

✅ 3. 允许用户上传文件

write_enable=YES

✅ 4. 限制用户只能访问自己的家目录(重要)

chroot_local_user=YES
allow_writeable_chroot=YES

⚠️ 如果只写 chroot_local_user=YES,而用户家目录可写,会报错
500 OOPS: vsftpd: refusing to run with writable root inside chroot()


✅ 5. 指定 FTP 用户主目录(可选)

例如:

sudo mkdir -p /home/ftpusers/user1
sudo useradd -d /home/ftpusers/user1 -s /usr/sbin/nologin user1
sudo passwd user1

并设置权限:

sudo chown user1:user1 /home/ftpusers/user1
sudo chmod 755 /home/ftpusers/user1

四、上传目录权限(非常关键)

假设用户需要上传:

sudo mkdir /home/ftpusers/user1/upload
sudo chown user1:user1 /home/ftpusers/user1/upload
sudo chmod 755 /home/ftpusers/user1/upload

✅ vsftpd 只负责是否允许写,具体能不能写,取决于 Linux 目录权限


五、匿名用户权限设置(不推荐生产环境)

anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

匿名目录示例:

sudo mkdir /srv/ftp/pub
sudo chown ftp:ftp /srv/ftp/pub
sudo chmod 755 /srv/ftp/pub

六、限制用户访问(白名单 / 黑名单)

✅ 白名单方式(推荐)

userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

编辑:

sudo nano /etc/vsftpd.user_list

加入允许的用户:

user1
user2

❌ 黑名单方式

userlist_enable=YES
userlist_deny=YES

七、防火墙 & SELinux(Debian 通常不用 SELinux)

防火墙(如果没有 ftp 规则)

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp

如果开启被动模式:

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
sudo ufw allow 30000:31000/tcp

八、SELinux(仅 RHEL/CentOS,Debian 一般忽略)

Debian 默认无 SELinux,可跳过。


九、常见问题排查

❌ 不能上传

  • write_enable=YES
  • 目录可写
  • 用户不在 nologin 被 shell 限制

❌ 登录后 500 OOPS

  • 家目录不要设为 777
  • 使用 allow_writeable_chroot=YES

十、最小可用配置示例(推荐)

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

如果你能告诉我:

  • 是 匿名 / 本地用户 / 虚拟用户
  • 是否 只允许上传某个目录
  • 是否 配合 Web 目录(如 /var/www)

我可以给你一个 完全贴合你场景的 vsftpd 权限方案。

0 踩