Linux 文件系统作为 root 和非 root 用户的权限?

Linux 文件系统作为 root 和非 root 用户的权限?

我对 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 文件权限的问题,但我只看到了非常基本的用例,我真的无法理解这一点。是否从父文件夹继承了一些权限导致了这种情况?

相关内容