在 Ubuntu 上使用 vsftpd(Very Secure FTP Daemon) 时,“调权限”通常包含 Linux 文件系统权限、vsftpd 配置权限 和 用户访问范围 三个方面。下面按常见场景给你一套实用做法。
sudo apt update
sudo apt install vsftpd
sudo systemctl status vsftpd
配置文件位置:
/etc/vsftpd.conf
编辑配置:
sudo nano /etc/vsftpd.conf
write_enable=YES
❗ 如果为 NO,任何用户都不能上传/删除。
anonymous_enable=NO
如果开匿名:
anon_upload_enable=YES
anon_mkdir_write_enable=YES
local_enable=YES
限制在家目录(强烈推荐):
chroot_local_user=YES
allow_writeable_chroot=YES
allow_writeable_chroot=YES避免“500 OOPS: vsftpd: refusing to run with writable root inside chroot”
vsftpd 权限最终受 系统用户权限 控制。
sudo useradd -m ftpuser
sudo passwd ftpuser
sudo mkdir /home/ftpuser/upload
sudo chown ftpuser:ftpuser /home/ftpuser/upload
sudo chmod 755 /home/ftpuser
sudo chmod 775 /home/ftpuser/upload
常见权限说明:
755:所有者可写,其他人只读775:组可写700:仅自己可访问sudo groupadd ftpgroup
sudo usermod -aG ftpgroup ftpuser
sudo mkdir /srv/ftp/shared
sudo chown root:ftpgroup /srv/ftp/shared
sudo chmod 775 /srv/ftp/shared
用户登录后通过软链接或 chroot 指向该目录。
如果你不想创建系统用户:
pam + db_loadguest_enable=YES
guest_username=ftp
user_config_dir=/etc/vsftpd/user_conf
每个用户文件示例:
local_root=/srv/ftp/user1
write_enable=YES
sudo systemctl restart vsftpd
查看错误:
sudo journalctl -u vsftpd
| 问题 | 原因 |
|---|---|
| 无法上传 | write_enable=NO 或目录不可写 |
| 500 OOPS | chroot 目录可写但未允许 |
| 登录被拒 | local_enable=NO |
| 权限不足 | Linux 文件权限不对 |
如果你能告诉我:
我可以直接给你一份可用的配置文件。