温馨提示×

ubuntu ftpserver如何设权限

小樊
46
2026-09-02 12:18:27
栏目: 智能运维

在 Ubuntu 上搭建 FTP 服务器(常用 vsftpd),权限设置一般包括:系统用户权限、目录权限、vsftpd 配置权限、以及 FTP 访问限制。下面按常见场景说明。


一、安装 vsftpd(如已安装可跳过)

sudo apt update
sudo apt install vsftpd

二、FTP 用户与系统权限

1. 创建专用 FTP 用户

sudo adduser ftpuser

设置密码,家目录默认在 /home/ftpuser

2. 限制用户只能 FTP,不能登录系统(更安全)

sudo usermod -s /usr/sbin/nologin ftpuser

三、目录权限设置(关键)

假设 FTP 根目录是 /home/ftpuser/ftp

sudo mkdir -p /home/ftpuser/ftp
sudo chown ftpuser:ftpuser /home/ftpuser/ftp
sudo chmod 755 /home/ftpuser/ftp
  • 上传目录
sudo mkdir /home/ftpuser/ftp/upload
sudo chmod 775 /home/ftpuser/ftp/upload

Linux 权限规则:

  • r = 4
  • w = 2
  • x = 1
  • 755:所有者可读写执行,其他人只读
  • 775:组可写

四、vsftpd 配置权限(/etc/vsftpd.conf)

编辑配置:

sudo nano /etc/vsftpd.conf

常见权限配置项

1. 禁止匿名访问

anonymous_enable=NO

2. 允许本地用户登录

local_enable=YES

3. 允许上传

write_enable=YES

4. 限制用户只能访问自己目录(推荐)

chroot_local_user=YES
allow_writeable_chroot=YES

⚠️ 如果不加 allow_writeable_chroot=YES,用户目录可写会报错

5. 限制某些用户不能登录 FTP

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

/etc/vsftpd.userlist 中写用户名(每行一个)


五、虚拟用户(多用户不同权限,进阶)

适合:

  • 多个 FTP 用户
  • 不同目录、不同权限
  • 不使用系统账号

步骤简要:

  1. db_load 创建用户数据库
  2. 配置 PAM
  3. 使用 guest_enable=YES
  4. 每个虚拟用户映射不同目录

如果你需要,我可以单独写一份 虚拟用户完整教程


六、防火墙 & 重启服务

sudo ufw allow 21/tcp
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd

七、常见问题

1. 登录后无法上传

  • 检查 write_enable=YES
  • 检查目录权限是否为 775

2. 500 OOPS: vsftpd

  • 家目录有写权限但 chroot 不允许
  • allow_writeable_chroot=YES

3. 被动模式连不上

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

并开放端口:

sudo ufw allow 30000:31000/tcp

八、示例:只读用户

sudo chmod 755 /home/ftpuser/ftp

配置中:

write_enable=NO

如果你能说明:

  • 匿名 / 系统用户 / 虚拟用户
  • 是否需要 上传 / 下载 / 只读
  • 是否 多用户不同目录

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

0