首先确保系统已更新并安装vsftpd:
sudo apt update
sudo apt install vsftpd
编辑配置文件/etc/vsftpd.conf(使用nano或vim):
sudo nano /etc/vsftpd.conf
关键设置调整(需取消注释或新增):
local_enable=YESwrite_enable=YES(若需上传/修改文件)chroot_local_user=YES(将用户锁定在自家目录,避免访问系统其他路径)allow_writeable_chroot=YES(若启用chroot_local_user,此选项必设,否则用户无法在自己的主目录中创建/修改文件)userlist_enable=YES,并设置userlist_file=/etc/vsftpd.user_list(列表中的用户方可登录)。sudo adduser ftpuser # 按提示设置密码及信息
sudo usermod -s /sbin/nologin ftpuser # 可选:禁止shell登录(增强安全,仅允许FTP访问)
FTP用户必须对其主目录拥有读+执行权限(目录权限755),文件权限644(若需上传文件,主目录需保留写权限):
sudo chown -R ftpuser:ftpuser /home/ftpuser # 将主目录所有者设为用户自身
sudo chmod 755 /home/ftpuser # 主目录权限设为755(rwxr-xr-x)
sudo find /home/ftpuser -type f -exec chmod 644 {} \; # 文件权限设为644(rw-r--r--)
注意:若启用了chroot_local_user=YES,主目录的所有者必须为root(避免用户越权修改目录结构),此时需调整:
sudo chown root:root /home/ftpuser
sudo chmod 755 /home/ftpuser
# 若需用户上传文件,需在主目录下创建子目录(如upload),并赋予用户所有权:
sudo mkdir /home/ftpuser/upload
sudo chown ftpuser:ftpuser /home/ftpuser/upload
配置修改后,重启服务使更改生效:
sudo systemctl restart vsftpd
若服务器开启了UFW防火墙,需允许FTP端口(默认21)及被动模式端口范围(如50000-50100):
sudo ufw allow 21/tcp # FTP控制端口
sudo ufw allow 50000:50100/tcp # 被动模式数据端口(根据实际情况调整)
sudo ufw reload # 重新加载防火墙规则
/var/log/vsftpd.log日志文件,查看具体错误(如用户被拒绝、权限不足);确保local_enable=YES和write_enable=YES已启用。allow_writeable_chroot=YES是否设置。pasv_min_port=50000、pasv_max_port=50100),并开放防火墙对应端口。