前段时间我了解到,将所有用户分配到同一个组并将他们的主目录设置为 701 可以防止他们互相干扰数据,但允许系统程序(例如 Web 服务器)访问数据。
因此,我创建了一个组,然后创建了users
两个用户,分别有和主目录。然后,登录后我无法进入,反之亦然。alice:users
bob:users
/opt/www/alice
/opt/www/bob
alice
/opt/www/bob
因此,在我看来,权限检查并不总是针对每种类型(用户、组、所有人),而是逐渐进行,基本上在出现否定匹配后停止。也就是说,在我的情况下
- 当同一组的用户尝试打开该目录时:
- 首先,我们正在检查一个用户,它是不一样的,但
7
让我们进一步 - 然后
0
阻止我们访问目录并停止进一步的权限检查 - 所以我们不会陷入每个人的情况
1
- 首先,我们正在检查一个用户,它是不一样的,但
- 而对于来自不同组的用户:
- 首先,我们正在检查一个用户,它是不一样的,但
7
让我们进一步 - 然后我们检查一个组,它是,
0
但是该组不同,所以它让我们通过 1
由于我们是这个目录的“所有人”,所以我们可以打开这个目录
- 首先,我们正在检查一个用户,它是不一样的,但
这个猜想正确吗?我可以依赖这种行为吗?这种设置可能存在哪些缺点?
答案1
我认为你有点错了,但结果是一样的。701
意思是:
- 标记为所有者的用户获得完全权限,
7
- 组中标记为组所有者的用户没有权限,
0
- 每个人都获得执行权限,
1
因此,如果所有者和权限分别/opt/www/bob
为bob:users
和701
,则bob
获得完全权限,每个人都可以“执行”该目录。这意味着任何人都可以访问文件夹中自己的文件或群组拥有的文件,但无法列出内容。
例子:
$> mkdir test
$> echo 'foo' > test/foo.txt
$> chmod 100 test/
$> ls -l test/
Permission denied
$> cat test/foo.txt
foo
$>
所以是的,组中的其他用户没有权限,但每个人都有执行权限。740
如果您想允许组读取而不允许其他人读取,最好将权限设置为。或者741
实现您所拥有的,但更清楚一点?