首先确保系统已安装VSFTPD,若未安装则执行以下命令:
sudo apt update
sudo apt install vsftpd
编辑VSFTPD主配置文件/etc/vsftpd.conf,调整以下核心参数以控制用户权限:
sudo nano /etc/vsftpd.conf
local_enable=YES;write_enable=YES(允许用户上传/修改文件);chroot_local_user=YES(将用户锁定在自家目录,提升安全性);allow_writeable_chroot=YES(若开启chroot,必须配置此项,否则用户无法在主目录中写入文件);local_umask=022(控制新创建文件的权限,默认755,即用户可读写执行,组和其他用户可读执行)。注意:若需允许匿名用户访问,可设置anonymous_enable=YES,但出于安全考虑,建议生产环境禁用匿名登录。
创建用户:使用adduser命令创建专用FTP用户(避免使用系统管理员账户):
sudo adduser ftpuser
按提示设置密码及其他信息(如全名、邮箱等)。
限制用户Shell访问(可选但推荐):为增强安全性,禁止用户通过SSH登录,仅允许FTP访问:
sudo usermod -s /sbin/nologin ftpuser
设置主目录权限:确保用户主目录归属正确且权限开放:
sudo chown -R ftpuser:ftpuser /home/ftpuser # 将主目录所有者设为用户自身
sudo chmod -R 755 /home/ftpuser # 设置目录权限(所有者可读写执行,其他用户可读执行)
若需创建子目录(如data)用于文件存储,可额外执行:
sudo mkdir /home/ftpuser/data
sudo chown ftpuser:ftpuser /home/ftpuser/data
sudo chmod 755 /home/ftpuser/data
限制可登录用户列表:若需仅允许特定用户访问,可通过user_list文件控制:
/etc/vsftpd.conf,添加:userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO # 设为NO表示仅允许列表中的用户登录
/etc/vsftpd.user_list文件中。配置被动模式(解决防火墙问题):若服务器位于防火墙后,需开启被动模式并指定端口范围:
sudo nano /etc/vsftpd.conf
添加以下参数:
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50100
pasv_address=your_server_public_ip # 替换为服务器公网IP(若为云服务器)
重启服务后,需在防火墙中开放21(FTP控制端口)及50000-50100(被动模式数据端口):
sudo ufw allow 21/tcp
sudo ufw allow 50000:50100/tcp
sudo ufw reload
完成配置后,重启服务以应用更改:
sudo systemctl restart vsftpd
若需设置开机自启,可执行:
sudo systemctl enable vsftpd
使用FTP客户端(如FileZilla)连接服务器,输入用户名、密码及服务器IP,验证是否能正常登录、上传/下载文件。若连接失败,需检查:
sudo vsftpd -t测试);通过以上步骤,可在Ubuntu上完成VSFTPD用户权限的基础设置。根据实际需求,可进一步调整配置(如虚拟用户、不同权限级别等)以满足复杂场景。