仍然可以猫/尾/头/等等。没有读取权限的文件

仍然可以猫/尾/头/等等。没有读取权限的文件

因此,作为 root,当我尝试在没有读取权限的情况下 cat 一个文件时,我仍然可以看到其中的内容,这看起来有点奇怪,因为作为 root,我无法在没有 w 权限的情况下写入文件(它以只读方式打开) )并且没有 x 权限我无法执行文件。

难道我做错了什么?

[root@aaaaaa enc]# ll logsuper
--w-------. 1 root root 3268 Apr 19 13:26 logsuper
[root@aaaaaa enc]# head logsuper
Done at Fri Apr 19 12:22:02 UTC 2019

如果没有 root 的 x 权限也无法执行文件:

[root@aaaaaa enc]# ll test1
----------. 1 root root 25 Apr 19 13:40 test1
[root@aaaaaa enc]# cat test1
#!/bin/bash

echo "${1}"
[root@aaaaaa enc]# ./test1 asdfasdasgasga
bash: ./test1: Permission denied

答案1

可以root做任何事情并且绕过权限测试。

另请阅读有关设定值

由于程序 -head甚至是 shell,即使由root(其 uid 根据定义为 0)运行时 - 使用系统调用(在系统调用(2)...)

也可以看看路径分辨率(7)能力(7)凭证(7)。他们一起解释什么时候打开(2)- 由过程运行 /usr/bin/head- 将失败。顺便提一句,阅读(2)不检查权限。

请注意,某些可执行文件的执行是通过执行(2)哪些文件可能会失败。你的 shell 正在做很多事情叉子(2)execve 致电。

一本不错的Unix编程书,比如老的碱性磷酸酶,有几个章节解释了这一切。你的只是另一个程序(另请参阅Unix哲学)并且您可以用 C 编写一个 shell(或者研究现有的自由软件 shell 程序的源代码,例如GNU bash)。

相关内容