Ubuntu FTP Server用户权限设置指南(基于vsftpd)
首先确保系统安装了vsftpd(Ubuntu默认仓库提供):
sudo apt update
sudo apt install vsftpd
编辑配置文件/etc/vsftpd.conf(需root权限),调整以下关键参数以控制用户权限:
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表示仅允许列表内的用户登录
sudo adduser ftpuser # 按提示设置密码及个人信息
FTP用户无需Shell访问,修改其默认Shell为/sbin/nologin:
sudo usermod -s /sbin/nologin ftpuser
确保用户家目录归属正确且权限合规(允许用户读取/执行目录,写入文件需后续调整子目录权限):
sudo chown ftpuser:ftpuser /home/ftpuser # 将家目录所有者设为用户自身
sudo chmod 755 /home/ftpuser # 目录权限设为755(所有者可读/写/执行,其他用户仅读/执行)
若用户需上传文件到子目录(如public_html),需单独设置该目录权限:
sudo mkdir -p /home/ftpuser/public_html
sudo chown ftpuser:ftpuser /home/ftpuser/public_html # 所有权归用户
sudo chmod 775 /home/ftpuser/public_html # 允许用户及所属组写入
若需限制仅特定用户可登录,需创建用户列表文件并添加允许的用户:
echo "ftpuser" | sudo tee /etc/vsftpd.user_list # 添加允许的用户(每行一个)
确保配置文件中userlist_enable=YES、userlist_deny=NO(允许列表内用户登录)。
修改配置后,重启服务使更改生效:
sudo systemctl restart vsftpd
若服务器启用了UFW防火墙,需开放FTP相关端口:
sudo ufw allow 21/tcp # FTP控制连接(默认端口)
sudo ufw allow 20/tcp # FTP数据连接(主动模式默认端口)
sudo ufw allow 30000:31000/tcp # 被动模式端口范围(根据实际情况调整)
sudo ufw reload # 重新加载防火墙规则
使用FTP客户端(如FileZilla)或命令行工具测试连接:
ftp your_server_ip # 输入用户名(ftpuser)和密码
验证是否能正常登录、上传/下载文件(如进入public_html目录测试写入权限)。
db-util创建虚拟用户(非系统用户),隔离系统权限;ftpgroup),将用户加入组并设置组权限(如chmod 775目录);vsftpd.conf中配置pasv_min_port和pasv_max_port,避免防火墙拦截被动模式连接。通过以上步骤,可灵活控制Ubuntu FTP Server用户的访问权限,平衡功能需求与安全性。