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

Ubuntu22.04配置vsftpd限制多用户主目录访问不生效怎么办

故障原因

你当前配置的chroot逻辑和需求完全相反,且缺少vsftpd 3.0+版本必须的兼容参数,导致限制规则不生效:

  1. chroot_local_user=NO + chroot_list_enable=YES的组合规则是:默认所有本地用户都不锁定主目录,只有写入/etc/vsftpd.chroot_list文件内的用户才会被锁定,你大概率没把UserA、UserB加入该列表,或者规则逻辑选反了。
  2. vsftpd从3.0.0版本开始新增了安全校验:被chroot锁定的用户主目录如果具备用户可写权限,会直接拒绝chroot规则生效,你没加对应兼容参数的话,就算列表写对了也不会生效。
正确配置步骤

方案1:全局锁定所有FTP用户(推荐,适合你当前场景)

直接编辑/etc/vsftpd.conf,修改/新增以下配置项:

# 所有本地用户登录后默认锁定在自身主目录
chroot_local_user=YES
# 关闭chroot例外列表
chroot_list_enable=NO
# 保留原有用户子目录token配置
user_sub_token=$USER
# 允许chroot根目录可写(vsftpd 3.0+必加,否则会报500 OOPS错误)
allow_writeable_chroot=YES
# 确认基础功能配置已开启(很多人漏配导致无法读写)
local_enable=YES
write_enable=YES
local_umask=022

方案2:仅锁定指定用户(保留列表模式)

如果不想全局锁定,就保留你原有的3项chroot配置,额外新增allow_writeable_chroot=YES参数,然后编辑/etc/vsftpd.chroot_list文件,把需要锁定的用户名逐行写入,每个用户占一行,不要留多余空格:

UserA
UserB

权限配置(可选,安全性更高)

如果不想开allow_writeable_chroot=YES参数(更符合vsftpd默认安全设计),可以通过目录权限适配规则:

  • 把用户主目录所有者改为root,移除用户的主目录写权限:
chown root:root /home/UserA
chmod 755 /home/UserA
chown root:root /home/UserB
chmod 755 /home/UserB
  • 在每个用户主目录下新建专属上传目录,给对应用户分配读写权限:
# 给UserA建上传目录
mkdir /home/UserA/upload
chown UserA:UserA /home/UserA/upload
chmod 755 /home/UserA/upload
# 给UserB建上传目录
mkdir /home/UserB/upload
chown UserB:UserB /home/UserB/upload
chmod 755 /home/UserB/upload

这种模式下用户登录后不能在主目录根写入文件,但可以进入下属upload目录正常传输文件,同时完全满足无法跳转上级目录的要求。

生效验证

  1. 先执行配置语法检查,避免配置错误:
vsftpd -t
  1. 无报错后重启服务生效:
systemctl restart vsftpd
  1. 测试登录后执行cd ..,会提示权限拒绝或直接停留在当前主目录,无法访问主目录外的任何路径。

注意:vsftpd是FTP/FTPS服务端,不提供SFTP(基于SSH的文件传输协议)能力,如果你实际需要的是SFTP服务的目录锁定,需要修改/etc/ssh/sshd_config配置,和vsftpd无关。

内容的提问来源于stack exchange,提问作者cmcau

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:42:19