You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 18.04服务器配置VSFTPD与SFTP,限制用户仅访问/home外指定目录失败求助

Ubuntu 18.04服务器配置VSFTPD与SFTP,限制用户仅访问/home外指定目录失败求助

嘿,我看你现在在配置SFTP和VSFTPD的时候,遇到了用户能随意逛系统目录的问题,咱们一步步来搞定它。先拆解你现有配置里的问题,再给出针对性的修改方案:


一、先搞定SFTP(SSH)的目录限制

你当前的/etc/ssh/sshd_config里,针对user的Match块缺少了最关键的chroot配置,这就是用户能到处访问的核心原因。按以下步骤调整:

  1. 先修复chroot目录的权限:SSH的chroot根目录必须由root用户独家拥有,且权限不能超过755。你之前把/opt/chroot/transfer设为user所有没问题,但父目录/opt/chroot得调整:
sudo chown root:root /opt/chroot
sudo chmod 755 /opt/chroot
  1. 修改/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转发是为了加固安全,防止用户绕过限制
  1. 重启SSH服务让配置生效:
sudo systemctl restart sshd

二、调整VSFTPD的配置(如果需要同时限制FTP访问)

如果你也想让这个用户通过FTP连接时被限制在指定目录,那你的VSFTPD配置还有几个细节要改:

  1. 修正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限制。

  1. 将user添加到chroot列表文件:
echo "user" | sudo tee -a /etc/vsftpd.chroot_list
  1. 如果你需要让用户能上传文件到transfer目录,记得把write_enable=NO改成write_enable=YES(你当前的配置是禁止写入的),而/opt/chroot/transfer的权限你已经设置正确了,不用再改。

  2. 重启VSFTPD服务:

sudo systemctl restart vsftpd

测试验证

现在用user账号测试连接:

  • SFTP登录后,用户的根目录会是/opt/chroot,只能看到transfer目录,无法访问系统其他路径
  • FTP登录后同样会被限制在/opt/chroot下,只能操作transfer目录

备注:内容来源于stack exchange,提问作者nm82

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 07:24:50