温馨提示×

Ubuntu FTPServer怎么设置权限

小樊
43
2026-07-18 18:24:50
栏目: 智能运维

在 Ubuntu 上搭建 FTPServer(FTP over SSL/TLS) 时,“权限设置”通常包含 三方面Linux 文件系统权限、FTP 用户权限、FTP 服务配置权限。下面以 最常用方案:vsftpd + FTPS 为例,系统讲一遍。


一、安装并启用 FTPS(vsftpd)

sudo apt update
sudo apt install vsftpd

备份原配置:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

二、FTPS(SSL/TLS)基本配置

编辑配置:

sudo nano /etc/vsftpd.conf

关键配置项(FTPS 必须):

listen=YES
listen_ipv6=NO

anonymous_enable=NO
local_enable=YES
write_enable=YES

chroot_local_user=YES
allow_writeable_chroot=YES

ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

重启服务:

sudo systemctl restart vsftpd

三、用户权限设置(核心)

✅ 方案 1:系统用户(最常用)

1️⃣ 创建 FTP 用户

sudo useradd -m ftpuser
sudo passwd ftpuser

2️⃣ 设置用户主目录权限(非常重要)

sudo chown ftpuser:ftpuser /home/ftpuser
sudo chmod 755 /home/ftpuser

如果你希望用户 只能访问自己的目录(不能 cd /)

chroot_local_user=YES
allow_writeable_chroot=YES

✅ 用户将被限制在自己的 home 目录


✅ 方案 2:虚拟用户(更安全,推荐生产环境)

适合多用户、仅 FTP 使用、无系统登录权限。

1️⃣ 安装依赖

sudo apt install libpam-pwdb

2️⃣ 创建虚拟用户数据库

sudo nano /etc/vsftpd/vusers.txt

内容:

user1
password1
user2
password2

生成数据库:

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

3️⃣ 配置 PAM

sudo nano /etc/pam.d/vsftpd

注释原内容,加入:

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

4️⃣ 虚拟用户映射为系统用户

sudo useradd -d /home/ftpshare -s /sbin/nologin ftpvuser
sudo chown ftpvuser:ftpvuser /home/ftpshare

vsftpd.conf 增加:

guest_enable=YES
guest_username=ftpvuser
virtual_use_local_privs=YES

四、目录权限控制(细粒度)

示例:只允许上传,不允许删除

sudo chown ftpvuser:ftpvuser /home/ftpshare/upload
sudo chmod 733 /home/ftpshare/upload

示例:只读目录

sudo chmod 755 /home/ftpshare/readonly

五、常见安全权限建议 ✅

✅ 禁止匿名登录:

anonymous_enable=NO

✅ 禁止用户 SSH 登录:

sudo usermod -s /sbin/nologin ftpuser

✅ 限制用户访问指定目录(chroot):

chroot_local_user=YES

✅ 防火墙放行 FTP

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

六、权限问题排查清单

现象 原因
530 Login incorrect PAM / 密码错误
500 OOPS: vsftpd chroot 目录不可写
无法上传 write_enable=NO
能登录但看不到文件 目录权限不足
FTPS 连不上 SSL 未配置

七、总结一句话

Ubuntu 上 FTPServer 权限 = Linux 目录权限 + vsftpd 配置 +(可选)虚拟用户映射


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

  • ✅ 用的是 vsftpd / pure-ftpd / proftpd
  • ✅ 是 本地用户 / 虚拟用户
  • ✅ 需求是 只读 / 只上传 / web 目录同步

我可以直接给你一套 最适合你场景的完整配置

0