Ubuntu 18.04服务器配置VSFTPD与SFTP,限制用户仅访问/home外指定目录失败求助
Ubuntu 18.04服务器配置VSFTPD与SFTP,限制用户仅访问/home外指定目录失败求助
嘿,我看你现在在配置SFTP和VSFTPD的时候,遇到了用户能随意逛系统目录的问题,咱们一步步来搞定它。先拆解你现有配置里的问题,再给出针对性的修改方案:
一、先搞定SFTP(SSH)的目录限制
你当前的/etc/ssh/sshd_config里,针对user的Match块缺少了最关键的chroot配置,这就是用户能到处访问的核心原因。按以下步骤调整:
- 先修复chroot目录的权限:SSH的chroot根目录必须由root用户独家拥有,且权限不能超过755。你之前把
/opt/chroot/transfer设为user所有没问题,但父目录/opt/chroot得调整:
sudo chown root:root /opt/chroot sudo chmod 755 /opt/chroot
- 修改
/etc/ssh/sshd_config,找到Match User user块,替换成以下配置:
Match User user PasswordAuthentication yes ChrootDirectory /opt/chroot ForceCommand internal-sftp X11Forwarding no AllowTcpForwarding no PermitTTY no
划重点:
ChrootDirectory要指向/opt/chroot而非/opt/chroot/transfer,因为chroot会把这个目录当作用户的根目录(/),用户登录后就能看到transfer子目录ForceCommand internal-sftp强制用户只能使用SFTP功能,不能登录系统shell,避免权限泄露- 关闭X11和TCP转发是为了加固安全,防止用户绕过限制
- 重启SSH服务让配置生效:
sudo systemctl restart sshd
二、调整VSFTPD的配置(如果需要同时限制FTP访问)
如果你也想让这个用户通过FTP连接时被限制在指定目录,那你的VSFTPD配置还有几个细节要改:
- 修正chroot规则:你当前设置的
chroot_local_user=YES+chroot_list_enable=YES,意味着所有本地用户都会被chroot,除了chroot_list里的用户——但你要的是只限制user这一个用户,所以得反过来:
# 把原有的chroot相关配置改成: chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list
这样只有chroot_list里的用户会被chroot限制。
- 将
user添加到chroot列表文件:
echo "user" | sudo tee -a /etc/vsftpd.chroot_list
如果你需要让用户能上传文件到transfer目录,记得把
write_enable=NO改成write_enable=YES(你当前的配置是禁止写入的),而/opt/chroot/transfer的权限你已经设置正确了,不用再改。重启VSFTPD服务:
sudo systemctl restart vsftpd
测试验证
现在用user账号测试连接:
- SFTP登录后,用户的根目录会是
/opt/chroot,只能看到transfer目录,无法访问系统其他路径 - FTP登录后同样会被限制在
/opt/chroot下,只能操作transfer目录
备注:内容来源于stack exchange,提问作者nm82
相关产品推荐
相关产品推荐

