多用户共享服务器工作目录隔离需“权限最小化+路径硬隔离”,Linux用ACL精细授权并禁跨访,Windows以NTFS权限为主、共享权限仅作门禁,FTP/Samba启用用户隔离模式,面板环境须子目录绑定与系统用户映射。

多用户共享服务器上实现工作目录隔离,核心是“权限最小化”+“路径硬隔离”。不是靠信任用户不乱点,而是让系统本身拒绝越界行为。关键不在“能做什么”,而在“不能碰什么”。
Linux:用ACL + 目录所有权双锁死
传统 chmod 755 + chown 只能分三档(属主/属组/其他),无法满足“A能进自己目录、B完全看不到”的需求。ACL 是更细的控制手段:
- 创建租户目录:mkdir -p /srv/work/tenant-a /srv/work/tenant-b,父目录设为 chmod 755 /srv/work(保证可遍历,但不开放写)
- 单独授权:setfacl -m u:tenant-a:rwx /srv/work/tenant-a,同时显式禁止跨访:setfacl -m u:tenant-a:--- /srv/work/tenant-b
- 启用默认 ACL:setfacl -d -m u:tenant-a:rwx /srv/work/tenant-a,确保该目录下新建文件自动继承权限
- 验证是否生效:getfacl /srv/work/tenant-a 查规则,再用 sudo -u tenant-a ls /srv/work/tenant-b 测试是否报 Permission denied
Windows:NTFS 权限为主,共享权限仅作门禁
共享权限(Share Permissions)和 NTFS 权限(Security Tab)是两把锁,最终生效的是更严格的那个。推荐策略:共享权限全设为“读取”,所有精细控制交由 NTFS 完成:
- 每个部门建独立文件夹,如 D:\share\finance、D:\share\hr
- 右键文件夹 → 属性 → 安全 → 编辑 → 删除 Everyone,只添加对应用户或组(如 Finance-Group)
- 给 Finance-Group 赋予“修改”权限,但取消勾选“删除子文件夹和文件”和“更改权限”,防误删归档
- 管理员账户单独加进每个目录的安全列表,并保留“完全控制”,便于统一维护
FTP/Samba 共享:用户隔离模式 + 虚拟目录定向
当通过 FTP 或 Samba 对外提供访问时,不能只靠文件系统权限,还要服务层拦截:
- FTP 启用“用户名目录”隔离模式(IIS 或 Pure-FTPd 均支持),用户登录后根路径自动锁定到 /home/ftp/user1,无法 cd .. 上探
- Samba 配置中使用 valid users = @dept-a 和 write list = @dept-a,并禁用 guest ok
- 如需 admin 账号跨部门只读查看,在对应共享段中额外添加:read list = admin,不加 write list
- 对敏感目录还可配合 firewalld 限制访问网段,比如只允许内网 192.168.10.0/24 访问财务共享
宝塔等面板环境:子目录绑定 + 系统用户映射
在 Web 面板场景下,子目录常被当作多租户入口,但默认仍共用主站用户(如 www)。必须打破这层共享:
- 先用【子目录绑定】功能为 /app 分配独立入口,获得配置隔离起点
- 在【文件】管理器中将该子目录所有者改为专属系统用户(如 appuser),权限设为 755(目录)/644(文件),并勾选递归
- 在【安全】→【系统用户】中创建 appuser,主目录指定为该子目录绝对路径,并禁用 SSH、仅允 SFTP
- 这样即使用户拿到 FTP 密码,也无法跳出自己的子目录,也执行不了系统命令










