此问题通常因软件源未更新导致。解决步骤:
sudo apt update更新软件源列表;sudo apt install vsftpd安装vsftpd。vsftpd对配置文件的属主和权限有严格要求。解决步骤:
/etc/vsftpd.conf的属主为root,权限为644(即-rw-r--r--);sudo chown root:root /etc/vsftpd.conf && sudo chmod 644 /etc/vsftpd.conf。日志文件权限不足会导致此错误。解决步骤:
sudo mkdir -p /var/log/vsftpd;vsftpd,权限设为755:sudo chown vsftpd:vsftpd /var/log/vsftpd && sudo chmod 755 /var/log/vsftpd。登录失败可能由以下原因导致:
/etc/vsftpd.conf中local_enable=YES(允许本地用户登录),且用户不在/etc/vsftpd/ftpusers文件中(该文件列出了禁止登录的用户);/etc/pam.d/vsftpd文件中包含auth required pam_unix.so和account required pam_unix.so(默认配置通常已包含)。此错误通常因用户目录权限不足导致。解决步骤:
sudo chmod -R 777 /path/to/user/directory(如/home/ftpuser);chroot限制用户在其主目录,需添加allow_writeable_chroot=YES到/etc/vsftpd.conf(避免“chroot目录不可写”错误)。被动模式需要指定端口范围并开放防火墙。解决步骤:
/etc/vsftpd.conf中启用被动模式并设置端口范围:pasv_enable=YES、pasv_min_port=10000、pasv_max_port=10100(端口范围可根据需求调整);sudo systemctl restart vsftpd;ufw,执行sudo ufw allow 20/tcp(控制连接)、sudo ufw allow 21/tcp(数据连接)、sudo ufw allow 10000:10100/tcp(被动模式端口),然后运行sudo ufw reload。服务启动失败通常因端口冲突或配置错误。解决步骤:
sudo netstat -tuln | grep 21,若被占用,停止占用服务(如sudo systemctl stop <占用服务>)或修改vsftpd的监听端口(listen_port=新端口);sudo journalctl -u vsftpd(日志会显示具体失败原因,如配置文件语法错误)。若需启用匿名用户访问,需正确配置以下选项:
/etc/vsftpd.conf中设置:anonymous_enable=YES(允许匿名登录)、anon_upload_enable=NO(禁止匿名上传)、anon_mkdir_write_enable=NO(禁止匿名创建目录)、anon_other_write_enable=NO(禁止其他写操作);/var/ftp)权限为755:sudo chmod 755 /var/ftp。若系统启用SELinux,可能会限制vsftpd的目录访问。解决步骤:
sudo setsebool -P ftp_home_dir on;sudo setsebool -P allow_ftpd_full_access on(注意:此设置会降低安全性,建议仅在测试环境使用)。若使用虚拟用户(如guest),需正确配置虚拟用户目录和权限:
sudo useradd -s /sbin/nologin -d /home/ftp guest;/etc/vsftpd.conf中启用虚拟用户:guest_enable=YES、guest_username=guest(指定虚拟用户对应的系统用户)、virtual_use_local_privs=YES(虚拟用户继承本地用户权限);sudo chown guest:guest /home/ftp && sudo chmod 755 /home/ftp。