文件的 root 权限是什么?

文件的 root 权限是什么?

如果我输入:

ls -l file.txt

我看到该文件的权限相当于“456”:

  • 4 = 所有者 (r--)
  • 5 = 组(接收)
  • 6 = 其他(RW-)

有哪些权利在这种情况下?有777吗?

是否可以更改权限以使 root 的权限少于所有者?

答案1

我会检查此页出。它深入讨论了文件权限。

但直接回答你的问题,不:

超级用户“root”能够访问系统上的任何文件。

例如,在您的示例中,如果该文件由 say 拥有bob,并且组所有者也是bob,那么您会看到类似这样的内容:

-r--r-xrw-. 1 bob bob 8 Jan 29 18:39 test.file

第三位组 (rw) 也适用于根,因为根是该others组的一部分。如果您尝试以 root 身份编辑该文件,您会发现这样做没有问题。

但为了进一步测试你的理论,如果该文件由 root 拥有:

-r--r-xrw-. 1 root root 8 Jan 29 18:40 test.file

然后你再次去编辑该文件,你会发现编辑它仍然没有问题。

最后,如果你做了极端:

chmod 000 test.file
ls -lh test.file
----------. 1 root root 8 Jan 29 18:41 test.file

然后您再次编辑您将看到的文件(至少在 vi/vim 中)"test.file" [readonly]。但您仍然可以编辑该文件并强制将其保存为:wq!.


使用 shell 脚本文件测试 @Stéphane Chazelas 的声明:

#!/bin/sh

echo "I'm alive! Thanks root!"


[root ~]# ls -lh test.sh
----------. 1 atgadmin atgadmin 31 Jan 30 10:59 test.sh

[root ~]# ./test.sh
-bash: ./test.sh: Permission denied

[root ~]# sh test.sh
I'm alive! Thanks root!

@Shadur 已经说过了,所以我只是引用而不是重述:

注意:检查执行位是否存在,而不是检查它是否适用于 root。

答案2

根据设计,根用户可以完全访问系统上的每个文件。如果您想保护文件免遭意外删除,您可以使用

chattr +i file

这将在 GNU/Linux 上设置不可变标志。您可以使用-i而不是删除它+i

在 FreeBSD 上,您可以使用

chflags schg file

替代noschgschg撤消它。

如果您希望防止文件被 root 看到,您应该将文件存储在不同的系统上,或者使用加密作为最后的手段。

也可以看看:https://superuser.com/questions/104015/removing-write-permission-does-not-prevent-root-from-writing-to-the-file

答案3

是否可以更改权限以使 root 的权限少于所有者?

Shure,很简单,只需更改 passwd 文件,使 root 的 uid 不为零即可。另一方面,不要这样做,这是个坏主意。

您不是第一个问这个问题的人,其中一些人提出了功能的想法,但我们稍后会讨论这个问题,首先让我们从了解权限系统的工作原理开始。

启动进行访问检查的计算机部分并不知道您的姓名,而是通过号码识别您,该号码称为 uid 或用户标识符。以类似的方式,它不知道您所属组的名称,只知道 gid。 uid 和 name 之间的映射位于 passwd 文件中,而 gid 则映射在 groups 文件中。

现在,当您想要打开文件时,会进行四项检查:您是否有权跳过检查,您是否作为用户被允许这样做,您是否作为组成员被允许,以及您作为其他人是否被允许被允许。我在这里跳过一些内容,例如名称服务开关和访问控制列表以及读写执行,但您感兴趣的部分是第一个测试。

有时您可以跳过文件权限测试。为什么?以及(非常重要)什么时候?现在,有时需要完成一些您不希望任何人都可以做的事情,并且它们不太适合文件权限模型。各种各样的事情,比如在低端口上打开网络连接、安装分区或跳过权限检查。如今,这些东西被称为能力。在过去,UID0 拥有所有这些功能,您对此无能为力,现在您可以向其他用户提供功能,或者放弃它们,但默认是旧的行为。

另一种限制 root 的方法是使用 selinux 之类的东西,但那是另一个蜡球。

答案4

在这种情况下,root 的权利是什么?有777吗?

是的。

如前所述,不会对 root 强制执行读写权限。但是,仍会检查执行权限是否存在,因此如果未设置执行标志,root 将无法执行该文件。这里的情况并非如此,因为该组有x旗帜。

另请注意,无论是否授予写权限,root 或任何人都将被拒绝对存储在只读文件系统上的文件进行写访问。

如果文件存储在远程安装的目录(如 NFS)上,根用户的权限也可能比所有者少。

最后,请注意,符号链接权限本质上是没有意义的。

相关内容