在 Ubuntu 上搭建 FTPServer(FTP over SSL/TLS) 时,“权限设置”通常包含 三方面:Linux 文件系统权限、FTP 用户权限、FTP 服务配置权限。下面以 最常用方案:vsftpd + FTPS 为例,系统讲一遍。
sudo apt update
sudo apt install vsftpd
备份原配置:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
编辑配置:
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
sudo useradd -m ftpuser
sudo passwd ftpuser
sudo chown ftpuser:ftpuser /home/ftpuser
sudo chmod 755 /home/ftpuser
如果你希望用户 只能访问自己的目录(不能 cd /):
chroot_local_user=YES
allow_writeable_chroot=YES
✅ 用户将被限制在自己的 home 目录
适合多用户、仅 FTP 使用、无系统登录权限。
sudo apt install libpam-pwdb
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
sudo nano /etc/pam.d/vsftpd
注释原内容,加入:
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
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 配置 +(可选)虚拟用户映射
如果你愿意,可以告诉我:
我可以直接给你一套 最适合你场景的完整配置。