vsftpd(Very Secure FTP Daemon)是Ubuntu上常用的FTP服务器软件,首先需要安装:
sudo apt update
sudo apt install vsftpd
编辑vsftpd的主配置文件/etc/vsftpd.conf,调整以下关键参数以控制用户权限:
sudo nano /etc/vsftpd.conf
local_enable=YES:允许本地系统用户登录FTP。write_enable=YES:允许用户上传、删除、修改文件(默认禁止)。anonymous_enable=NO:禁止匿名用户登录(提升安全性)。chroot_local_user=YES:将用户限制在自己的主目录(防止访问系统其他目录)。allow_writeable_chroot=YES:若启用了chroot_local_user,必须添加此选项,否则用户无法写入自己的主目录(会导致“500 OOPS”错误)。userlist_enable=YES:启用用户列表文件(/etc/vsftpd.user_list),仅允许列表中的用户登录。userlist_deny=NO:设置为用户列表中的用户允许登录(若设为YES则为拒绝)。listen=YES:启用独立模式(避免与IPv6冲突)。listen_ipv6=NO:禁用IPv6支持(如无需IPv6)。
保存并退出编辑器(Ctrl+X→Y→Enter)。使用adduser命令创建专用FTP用户(避免使用root或其他敏感账户):
sudo adduser ftpuser
按照提示设置密码(建议使用强密码)及其他信息(如姓名、电话等,可直接回车跳过)。
为增强安全性,禁止FTP用户通过SSH登录系统,仅允许FTP访问:
sudo usermod -s /sbin/nologin ftpuser
确保FTP用户的主目录(默认为/home/ftpuser)权限正确:
sudo chown ftpuser:ftpuser /home/ftpuser # 将目录所有者设为用户自身
sudo chmod 755 /home/ftpuser # 权限:所有者可读/写/执行,组和其他用户可读/执行
775(组用户也可写):sudo chmod 775 /home/ftpuser
或保持755,但在用户主目录下创建专门的可写子目录(如/home/ftpuser/uploads):mkdir /home/ftpuser/uploads
sudo chown ftpuser:ftpuser /home/ftpuser/uploads
sudo chmod 775 /home/ftpuser/uploads
修改配置后,需重启服务使更改生效:
sudo systemctl restart vsftpd
若服务器启用了ufw防火墙,需开放FTP端口(默认21):
sudo ufw allow 21/tcp
sudo ufw reload # 重新加载防火墙规则
使用FTP客户端(如FileZilla)或命令行工具测试连接:
ftp your_server_ip
输入创建的FTP用户名(ftpuser)和密码,验证是否能正常登录、上传/下载文件。
vsftpd的虚拟用户功能,创建不依赖系统用户的FTP账号,更适合公共FTP场景。ftpgroup),将多个用户加入组,通过chown和chmod设置组权限,实现批量权限管理。chroot_list_enable=YES和chroot_list_file,仅限制特定用户到其主目录,其他用户可访问整个系统(需谨慎使用)。注意事项:
umask设置默认文件权限(如umask 022,新建文件权限为644,目录为755)。