首先更新系统包列表并安装vsftpd(Very Secure FTP Daemon):
sudo apt update
sudo apt install vsftpd
编辑vsftpd主配置文件/etc/vsftpd.conf(使用nano或vim):
sudo nano /etc/vsftpd.conf
关键配置项说明(根据需求调整):
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES # 必须开启,否则chroot环境下无法写入
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO # 设置为NO时,列表内用户允许访问;设为YES则拒绝
注意:修改配置文件后,需重启vsftpd服务使更改生效:
sudo systemctl restart vsftpd
(1)创建系统用户(用于FTP登录)
使用adduser命令创建用户(按提示设置密码及其他信息):
sudo adduser ftpuser
(2)设置用户主目录权限
确保用户主目录归该用户所有,且权限为755(允许用户读取/执行,组和其他用户仅读取):
sudo chown ftpuser:ftpuser /home/ftpuser
sudo chmod 755 /home/ftpuser
(3)强化chroot环境安全
若启用了chroot_local_user=YES,需将用户主目录的所有权改为root(防止用户通过FTP修改主目录结构):
sudo chown root:root /home/ftpuser
sudo chmod 755 /home/ftpuser
(4)创建用户专属目录(可选)
若需用户拥有独立存储空间,可在主目录下创建子目录并赋予权限:
sudo mkdir /home/ftpuser/files
sudo chown ftpuser:ftpuser /home/ftpuser/files
(1)创建用户列表文件
sudo touch /etc/vsftpd.user_list
sudo nano /etc/vsftpd.user_list
(2)添加允许/拒绝的用户
每行输入一个用户名(如仅允许ftpuser1、ftpuser2访问):
ftpuser1
ftpuser2
(3)配置列表行为
在/etc/vsftpd.conf中设置:
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO # 设为NO时,列表内用户允许访问;设为YES则拒绝
若系统启用了ufw防火墙,需开放FTP端口及被动模式端口:
sudo ufw allow 21/tcp # FTP控制端口(默认21)
sudo ufw allow 990/tcp # FTPS加密控制端口(可选)
sudo ufw allow 40000:50000/tcp # 被动模式数据端口范围(根据实际情况调整)
sudo ufw enable # 启用防火墙
使用FTP客户端(如FileZilla)连接服务器:
测试上传、下载及目录访问权限,确保配置生效。
write_enable=YES是否开启,主目录权限是否正确(chmod 755)。local_enable=YES,用户是否在userlist中且userlist_deny=NO。allow_writeable_chroot=YES,且主目录所有权为root。通过以上步骤,可完成Ubuntu下VSFTPD用户权限的基本配置,兼顾安全性与实用性。