如何让客户端通过FTP访问Digital Ocean Droplet指定文件夹(LEMP环境)
配置VSFTPD限制用户访问指定站点文件夹(Ubuntu 16.04)
嘿,刚好你已经完成了添加新用户的步骤,接下来咱们一步步把VSFTPD配置成你需要的样子——让每个用户只能访问自己对应的站点文件夹,不会拿到服务器的完整权限,同时确保客户端能正常连接你的Droplet。
第一步:备份并修改VSFTPD配置文件
首先,咱们先备份一下原始配置文件,避免改坏了没法恢复:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
然后用新手友好的nano编辑器打开主配置文件:
sudo nano /etc/vsftpd.conf
你需要找到并修改/添加以下参数(如果参数不存在就直接加到文件末尾):
anonymous_enable=NO:禁止匿名访问,保障安全local_enable=YES:允许本地用户登录FTPwrite_enable=YES:允许用户上传/修改文件(根据你的需求开启)chroot_local_user=YES:把用户限制在指定目录内,无法跳转到服务器其他路径allow_writeable_chroot=YES:Ubuntu 16.04必须开启这个,否则chroot目录如果可写会报错user_sub_token=$USER:自动匹配用户名,替换后续路径里的变量local_root=/var/www/$USER:设置用户登录后的默认文件夹,假设你的站点文件夹放在/var/www下且和用户名同名(比如用户site1对应/var/www/site1);如果是自定义站点路径,直接替换成实际路径即可pasv_min_port=40000和pasv_max_port=50000:设置被动模式的端口范围,方便防火墙放行pasv_address=你的Droplet公网IP:替换成你Droplet的实际公网IP,确保客户端能正常连接被动模式userlist_enable=YES、userlist_file=/etc/vsftpd.user_list、userlist_deny=NO:仅允许列表内的用户登录,进一步提升安全性
修改完成后,按Ctrl+O保存,Ctrl+X退出编辑器。
第二步:设置站点文件夹的权限
要确保用户对自己的站点文件夹有读写权限,不然登录后没法上传文件:
# 替换成你的FTP用户名和对应的站点路径 sudo chown -R your_username:your_username /var/www/your_username # 设置权限:用户可读写,其他用户仅可读(可根据需求调整) sudo chmod -R 755 /var/www/your_username
第三步:添加用户到允许列表并重启服务
把你之前创建的FTP用户加入允许登录的名单:
echo "your_username" | sudo tee -a /etc/vsftpd.user_list
然后重启VSFTPD服务让配置生效:
sudo systemctl restart vsftpd
第四步:配置防火墙放行FTP端口
Ubuntu 16.04默认用ufw防火墙,咱们需要放行FTP主动端口和被动端口范围:
sudo ufw allow 21/tcp sudo ufw allow 40000:50000/tcp sudo ufw reload
客户端连接方法
现在你可以用FTP客户端(比如FileZilla、WinSCP)连接你的Droplet了:
- 主机:填写你的Droplet公网IP
- 用户名:你之前创建的FTP用户名
- 密码:该用户的登录密码
- 端口:默认21(没改配置的话不用改)
- 连接模式选择被动模式(大多数客户端默认就是这个,无需手动调整)
这样用户登录后就只能访问你指定的站点文件夹,无法浏览服务器其他目录,完全符合你的需求~
内容的提问来源于stack exchange,提问作者designfreak
相关产品推荐
相关产品推荐

