Ubuntu 下使用 vsftpd 实现文件上传
一 安装与基础配置
sudo apt update && sudo apt install vsftpdsudo cp /etc/vsftpd.conf /etc/vsftpd.conf.baksudo nano /etc/vsftpd.conflocal_enable=YES、write_enable=YESanonymous_enable=NOchroot_local_user=YESallow_writeable_chroot=YESutf8_filesystem=YESsudo systemctl restart vsftpdsudo systemctl enable vsftpdsudo ufw allow 21/tcpsudo ufw allow 40000:50000/tcpsudo ufw allow 990/tcpftp <服务器IP>。二 权限与目录设置
sudo chown -R ftpuser:ftpuser /var/www/htmlsudo chmod 755 /var/www/htmlsudo usermod -a -G ftpuser www-datasudo chmod 775 /var/www/htmllocal_umask 控制新建文件/目录的权限掩码(默认常见为 077):
local_umask=022(目录常为 755,文件常为 644)local_umask=002(目录 775,文件 664)chroot_local_user=YES 限制用户在主目录;如个别用户需例外,可结合 chroot_list_enable=YES 与 /etc/vsftpd.chroot_list 配置白名单。三 常见错误与快速排查
chroot_list_enable=YES 但缺少名单文件。sudo touch /etc/vsftpd.chroot_list/etc/vsftpd.conf 中加入 allow_writeable_chroot=YES 或将可写目录移出 chroot 根(如 local_root=/home/ftpuser/ftp)。write_enable=YES 是否开启;目标目录对登录用户是否可写;是否误用了 777 导致权限错乱(建议改为 755/775 并合理设置属主/属组)。vsftpd.conf 设置 pasv_enable=YES、pasv_min_port=40000、pasv_max_port=50000,并放行对应端口段与云安全组。四 安全与替代方案
anonymous_enable=NO),必要时仅开放给受控用户。xferlog_enable=YES、xferlog_file=/var/log/vsftpd.log。guest_enable=YES、guest_username=ftpvirtual、user_config_dir=/etc/vsftpd/user_conf 配置虚拟用户,隔离系统账号,便于权限细粒度控制。