温馨提示×

ubuntu vsftp如何设权限

小樊
37
2026-10-24 18:55:16
栏目: 智能运维

在 Ubuntu 上使用 vsftpd(Very Secure FTP Daemon) 时,权限设置通常涉及 系统用户权限 + vsftpd 配置 + 目录权限 三部分。下面按常见场景说明。


一、安装 vsftpd

sudo apt update
sudo apt install vsftpd

配置文件位置:

/etc/vsftpd.conf

二、基本权限控制(vsftpd.conf)

编辑配置:

sudo nano /etc/vsftpd.conf

1️⃣ 禁止匿名登录(推荐)

anonymous_enable=NO

2️⃣ 允许本地用户登录

local_enable=YES
write_enable=YES

3️⃣ 限制用户只能访问自己的目录(FTP jail)

chroot_local_user=YES
allow_writeable_chroot=YES

否则登录后可能看到整个系统目录(不安全)


三、用户与目录权限设置

示例:给用户 ftpuser 使用 FTP

1️⃣ 创建用户

sudo adduser ftpuser

2️⃣ 设置 FTP 根目录

sudo mkdir -p /home/ftpuser/ftp
sudo chown ftpuser:ftpuser /home/ftpuser/ftp
sudo chmod 755 /home/ftpuser

⚠️ 注意:

  • chroot 目录不能有 写权限(否则登录失败)
  • 正确做法:
sudo chmod 555 /home/ftpuser
sudo chmod 755 /home/ftpuser/ftp

四、只允许某些用户登录(白名单)

1️⃣ 启用用户列表

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

2️⃣ 添加允许的用户

echo ftpuser | sudo tee -a /etc/vsftpd.userlist

五、限制用户不能登录系统(仅 FTP)

sudo usermod -s /usr/sbin/nologin ftpuser

六、只读 / 只写权限控制

只读用户

write_enable=NO

或针对目录:

sudo chmod 555 /home/ftpuser/ftp

只写(不能列目录)

sudo chmod 733 /home/ftpuser/ftp

七、虚拟用户(多用户但不建系统账号)

适合:

  • 很多 FTP 账号
  • 不想创建 Linux 用户

方式:

  • PAM + 数据库(db4)
  • 配置较复杂(需要我可以单独写)

八、重启服务

sudo systemctl restart vsftpd
sudo systemctl enable vsftpd

九、常见问题

❌ 500 OOPS: cannot change directory

原因:SELinux / 权限 / chroot 目录可写
解决:

sudo chmod 555 /home/ftpuser

❌ 登录后看不到文件

检查:

  • 目录权限
  • local_root 设置

如果你能告诉我:

  • ✅ 是 系统用户还是虚拟用户
  • ✅ 要 只读 / 只写 / 读写
  • ✅ 是否 限制在家目录

我可以给你一份 精确配置模板。

0 踩