文件的根权限是什么?

Elr*_*Der 5 root permissions chmod files

如果我输入:

ls -l file.txt
Run Code Online (Sandbox Code Playgroud)

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

  • 4 = 所有者 (r--)
  • 5 = 组 (rx)
  • 6 = 其他 (rw-)

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

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

dev*_*ull 8

我会检查这个页面。它深入讨论了文件权限。

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

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

例如,在您的示例中,如果文件归 say 所有bob并且组所有者也是bob,那么您会看到如下内容:

-r--r-xrw-. 1 bob bob 8 Jan 29 18:39 test.file
Run Code Online (Sandbox Code Playgroud)

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

但是为了进一步测试您的理论,如果文件归 root 所有:

-r--r-xrw-. 1 root root 8 Jan 29 18:40 test.file
Run Code Online (Sandbox Code Playgroud)

你再次去编辑文件,你会看到编辑它仍然没有问题。

最后,如果你做了极端:

chmod 000 test.file
ls -lh test.file
----------. 1 root root 8 Jan 29 18:41 test.file
Run Code Online (Sandbox Code Playgroud)

然后你又去编辑你会看到的文件(至少在 vi/vim 中)"test.file" [readonly]。但是您仍然可以编辑文件并使用:wq!.


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

#!/bin/sh

echo "I'm alive! Thanks root!"
Run Code Online (Sandbox Code Playgroud)


[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!
Run Code Online (Sandbox Code Playgroud)

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

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

  • `root` 没有 _execution_ 权限,除非至少设置了一个执行位。 (4认同)

rme*_*cer 7

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

chattr +i file
Run Code Online (Sandbox Code Playgroud)

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

在 FreeBSD 上,您可以使用

chflags schg file
Run Code Online (Sandbox Code Playgroud)

替换noschgschg撤消它。

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

另见:https : //superuser.com/questions/104015/removing-write-permission-does-not-prevent-root-from-writing-to-the-file