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

如何限制顶级目录写入权限,同时允许用户写入其子目录?

解决顶级目录与子目录权限的矛盾需求

我懂你这种刚摸Linux文件权限的困惑,父目录和子目录的权限关联确实容易绕晕人——当初我第一次调整目录权限时也踩过类似的坑!咱们先把核心逻辑理清楚,再一步步解决你的需求。

目录权限的核心逻辑(必看)

首先得明确:目录的权限和文件的权限作用完全不同,尤其是这两个关键权限:

  • 执行权限(x):决定你能不能进入该目录(比如cd命令),以及能否访问目录内的文件/子目录的元信息(这是修改子目录内容的前提)。
  • 写入权限(w):决定你能不能在该目录下创建、删除、重命名文件或子目录——注意,这只影响当前目录的结构,不影响子目录内部的操作!

你的需求是:不让全局用户修改tdir/的内容(也就是不能在tdir里新增/删除/重命名子目录/文件),但允许他们修改tdir/dir1/内部的内容。那核心就是拆分父目录和子目录的权限:

具体操作步骤

假设tdir和dir1已经存在,我们一步步来:

1. 先确保全局用户能进入tdir

如果全局用户连tdir都进不去,就别谈修改dir1的内容了。所以要给tdir的全局用户(other)保留执行权限(x),同时去掉写入权限(w):

# 去掉全局用户对tdir的写入权限,保留读取和执行
chmod o-w tdir

执行后,用ls -ld tdir查看权限,应该类似这样:

drwxr-xr-x 3 user group 96 Aug 20 10:00 tdir

2. 给子目录dir1开放全局写入权限

接下来,让全局用户能修改dir1内部的内容,需要给dir1的全局用户加上写入权限(w),同时确保执行权限(x)存在:

# 给全局用户添加对dir1的写入权限
chmod o+w tdir/dir1

查看dir1的权限(ls -ld tdir/dir1),应该类似:

drwxr-xrwx 2 user group 64 Aug 20 10:01 tdir/dir1

为什么这样可行?

  • 对于tdir:全局用户有r和x权限,能cd进去、能看到里面的子目录,但没有w权限,所以不能在tdir里新建文件/子目录,也不能删除或重命名dir1,完美符合你“不让全局用户修改tdir内容”的需求。
  • 对于tdir/dir1:全局用户有x(能进入)和w(能修改内部内容)权限,所以可以在dir1里创建、删除、编辑文件,满足你的第二个需求。

额外注意点

  • 如果tdir原来的全局用户没有x权限,需要先加上:chmod o+x tdir,否则用户连cd tdir/dir1都做不到。
  • 如果你还想限制全局用户查看tdir的目录列表(但仍能进入dir1),可以去掉tdir的全局读取权限(chmod o-r tdir),只要保留x权限,用户知道dir1存在的话,直接cd tdir/dir1还是能进去的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:39:44