Ubuntu FTPServer 权限冲突的定位与解决
一、常见成因与快速判断
二、标准修复流程
sudo usermod -aG www-data ftpuser;必要时将站点目录属主设为 www-data:www-data。sudo chown -R www-data:www-data /var/www/example.com/public_htmlsudo chmod -R 775 /var/www/example.com/public_htmlsudo systemctl restart vsftpd 使配置生效。sudo ufw allow 21/tcp、sudo ufw allow 30000:31000/tcp;如使用 firewalld,执行 sudo firewall-cmd --permanent --add-port=21/tcp 并重新加载。三、典型场景配置示例
场景一:本地用户上传,供 Nginx/Apache 读取(推荐做法)
local_enable=YESwrite_enable=YESchroot_local_user=YESlocal_umask=002(文件 664,目录 775)file_open_mode=0777(可选,确保服务可直接打开新文件)场景二:匿名只读 + 本地用户写入(隔离更清晰)
anonymous_enable=YES、anon_root=/var/ftpanon_upload_enable=YES、anon_mkdir_write_enable=YES(仅对 pub 赋予 ftp 组写权限)local_enable=YES、write_enable=YESchroot_local_user=YES四、验证与排错命令清单
sudo systemctl status vsftpd、sudo ufw status、sudo firewall-cmd --list-ports、ss -tulpen | grep ':21\|:30000'。sudo tail -f /var/log/auth.log、sudo journalctl -xe | grep vsftpd。ls -ld /var/www/example.com /var/www/example.com/public_html、groups ftpuser、id ftpuser。ftp your_server_ip 验证上传/下载与目录列取。五、安全建议