我对 Linux 中的文件系统权限有基本的了解(或者我认为到目前为止我已经了解了……),但我现在面临的问题让我感到困惑。
为了仔细检查并进行演示,我在清晰的 OEL 安装上重新创建了它。
我有 3 个用户:root、svcuser(“mygroup”组的成员)和其他用户
[root@oel ~]# id root
uid=0(root) gid=0(root) groups=0(root)
[root@oel ~]# id svcuser
uid=500(svcuser) gid=501(svcuser) groups=501(svcuser),500(mygroup)
[root@oel ~]# id otheruser
uid=501(otheruser) gid=502(otheruser) groups=502(otheruser)
/opt 中有一个文件夹 (“app”),其中有一个子文件夹 (“sub”)。/opt 由 root:root 拥有,就像 /opt/app 一样,但 /opt/app/sub 由 svcuser:mygroup 拥有,权限设置为 700,但作为 root,我仍然能够列出其内容并在其中创建一个新文件:
[root@oel ~]# cd /opt
[root@oel opt]# ll
total 8
drwxr-xr-x. 3 root root 4096 Aug 30 23:24 app
drwxr-xr-x. 2 root root 4096 Mar 26 2015 rh
[root@oel opt]# ll app
total 4
drwx------. 2 svcuser mygroup 4096 Aug 30 23:27 sub
[root@oel opt]# ll app/sub
total 0
-rw-r--r--. 1 root root 0 Aug 30 23:27 newfile
我不能做与“otheruser”相同的事情。
没有继承默认的 ACL:
[root@oel ~]# getfacl /opt/app
getfacl: Removing leading '/' from absolute path names
# file: opt/app
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
[root@oel ~]# getfacl /opt/app/sub/
getfacl: Removing leading '/' from absolute path names
# file: opt/app/sub/
# owner: svcuser
# group: mygroup
user::rwx
group::---
other::---
这种行为的原因是什么?root 用户是否有任何其他权限来访问此类文件夹,而无需明确拥有此类权限?还是因为父文件夹归 root 所有?
我也检查了 SELinux 设置,但据我所知,它们仅在 DAC 规则尚未拒绝访问时才会发挥作用,我认为情况就是如此,但“root”和“otheruser”具有相同的上下文,因此这应该不会产生区别:
[root@oel opt]# id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@oel ~]# su otheruser
[otheruser@oel root]$ id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@oel opt]# ls -Z
drwxr-xr-x. root root unconfined_u:object_r:usr_t:s0 app
drwxr-xr-x. root root system_u:object_r:usr_t:s0 rh
[root@oel opt]# ls -Z app/
drwx------. svcuser mygroup unconfined_u:object_r:usr_t:s0 sub
由于父文件夹归 root-thing 所有,我尝试对两个用户的主文件夹下的子文件夹执行相同的操作:对于 root 也会发生同样的情况,但对于“otheruser”,我甚至无法将其转让给其他人。
[root@oel ~]# pwd
/root
[root@oel ~]# ll
total 48
-rw-------. 1 root root 1829 May 6 16:20 anaconda-ks.cfg
-rw-r--r--. 1 root root 28275 May 6 16:20 install.log
-rw-r--r--. 1 root root 7570 May 6 16:17 install.log.syslog
drwxr-xr-x. 2 svcuser mygroup 4096 Aug 30 23:32 sub
说实话,现在我完全记不清了,所以我的问题是,我到底错过了什么?我花了一天时间研究有关 Linux 文件权限的问题,但我只看到了非常基本的用例,我真的无法理解这一点。是否从父文件夹继承了一些权限导致了这种情况?