首先更新软件包列表并安装vsftpd(Ubuntu默认仓库提供):
sudo apt update
sudo apt install vsftpd
编辑配置文件/etc/vsftpd.conf(使用nano或vim):
sudo nano /etc/vsftpd.conf
关键配置项说明(取消注释或添加):
local_enable=YESwrite_enable=YESchroot_local_user=YESallow_writeable_chroot=YESanonymous_enable=NO(可选但推荐)配置完成后保存并退出(Ctrl+O→Enter→Ctrl+X)。
sudo adduser ftpuser
按照提示设置密码(建议使用强密码),其他信息可跳过或自定义。
sudo usermod -s /sbin/nologin ftpuser
此操作防止用户通过SSH登录系统,仅能通过FTP访问。
将用户主目录所有权赋予该用户,并设置合理权限(755允许用户读写执行,其他用户仅读执行):
sudo chown ftpuser:ftpuser /home/ftpuser
sudo chmod 755 /home/ftpuser
若需细分目录权限(如上传目录),可单独设置:
sudo mkdir /home/ftpuser/uploads
sudo chown ftpuser:ftpuser /home/ftpuser/uploads
sudo chmod 775 /home/ftpuser/uploads # 允许用户及组写入
在/etc/vsftpd.conf中添加/修改以下配置:
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO # 设为NO表示仅允许列表内用户登录
编辑用户列表文件(每行一个用户名):
echo "ftpuser" | sudo tee -a /etc/vsftpd.user_list
若需拒绝特定用户,可将userlist_deny=YES,并在列表中添加需拒绝的用户名。
应用所有配置变更:
sudo systemctl restart vsftpd
设置开机自启(可选但推荐):
sudo systemctl enable vsftpd
允许FTP端口(默认21)及被动模式端口范围(如30000-31000):
sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp
sudo ufw reload
若使用ufw,需确保其已启用:sudo ufw enable。
使用FTP客户端(如FileZilla)或命令行工具验证:
ftp your_server_ip
输入用户名ftpuser和密码,检查是否能正常登录、上传/下载文件。
/etc/vsftpd.conf中配置pasv_enable=YES及端口范围(pasv_min_port=30000、pasv_max_port=31000)。sudo tail -f /var/log/vsftpd.log。