我有以下文件:
---------- 1 Steve Steve 341 2017-12-21 01:51 myFile.txt
我将用户切换到root
终端,我注意到以下行为:
我可以读取这个文件并写入它。
我无法执行此文件。
如果我
x
在文件的用户权限 (---x------
) 或组权限 (------x---
) 或其他权限 (---------x
) 中设置该位,那么我将能够执行该文件。
任何人都可以向我解释或指向一个教程,该教程解释了root
用户处理文件和目录时适用的所有规则吗?
对文件和目录的特权访问实际上是由能力决定的,而不仅仅是存在
root
与否。在实践中,root
通常具有所有可能的功能,但在某些情况下,可能会删除所有/许多功能,或者将某些功能提供给其他用户(他们的进程)。简而言之,您已经描述了访问控制检查如何为特权进程工作。以下是不同功能对它的实际影响:
这里的主要功能是
CAP_DAC_OVERRIDE
,拥有它的进程可以“绕过文件读取、写入和执行权限检查”。这包括读取和写入任何文件,以及读取、写入和访问目录。它实际上并不适用于执行未标记为可执行的文件。( ) 中的注释
generic_permission
fs/namei.c
,在访问检查文件之前,说x
如果您尝试执行文件,代码会检查是否至少设置了一位。我怀疑这只是一个便利功能,以防止意外运行随机数据文件并出现错误或奇怪的结果。无论如何,如果您可以覆盖权限,您可以制作一个可执行副本并运行它。(虽然它在理论上可能会有所不同,因为进程的 setuid 文件能够覆盖文件权限(
CAP_DAC_OVERRIDE
),但没有其他相关功能(CAP_FSETID
//CAP_FOWNER
)CAP_SETUID
。但是CAP_DAC_OVERRIDE
允许编辑/etc/shadow
和类似的东西,所以它大致相等无论如何都要拥有完全的root访问权限。)还有
CAP_DAC_READ_SEARCH
允许读取任何文件和访问任何目录的功能,但不能执行或写入它们;并且CAP_FOWNER
允许进程执行通常仅为文件所有者保留的操作,例如更改权限位和文件组。仅在下面提到了覆盖目录上的粘性位
CAP_FOWNER
,因此似乎CAP_DAC_OVERRIDE
不足以忽略这一点。(它会给你写权限,但通常在粘性目录中你有这个权限,并+t
限制它。)(我认为特殊设备在这里算作“文件”。至少
generic_permission()
只有目录的类型检查,但我没有检查之外。)当然,还是有连能力都无法帮你修改文件的情况:
/proc
,/sys
因为它们不是真正的实际文件chattr
不可变+i
并且仅在 ext2/ext3/ext4 上附加+a
标志,这两个标志甚至都阻止了 root,并且还阻止了文件重命名等。root_squash
在 NFS 中将 root 映射到没人这与您注意到的默认权限完全相同:
读写:
默认情况下,Root 用户可以访问系统中的任何文件。您可以通过更改属性(如在此处说明:chattr )来删除此访问权限。然后将其与能力相关联。
执行:
除非设置了至少一个执行位,否则根用户没有执行权限。
由
myFile.txt
获得chmod 000 myFile.txt
。---------
表示用户,组和其他没有权限。root 用户可以不受限制地修改此文件。授予读/写权限。要执行此文件,root 用户需要使其可执行。(chmod 100、010 或 001)
执行模式的处理方式与其他模式略有不同。
读取和写入权限用于强制执行安全策略。用户通常不受安全限制的
root
影响(有一些例外,如不可变文件,而现代功能(如功能)使其更加细粒度),这就是该帐户的另一个名称是“超级用户”的原因。执行权限更多的是一种建议模式,区分文件是可执行文件还是只是数据。因此,即使是 root 用户也遵守它——执行数据文件是没有意义的。如果没有设置执行权限,root 不能执行文件;如果其中任何一个被设置,他可以。当然,由于 root 也有权更改任何文件的权限,因此该帐户可以根据需要使文件可执行(除非文件系统是只读的)。
顺便说一句,脚本是一个有趣的案例。脚本是相关解释器的数据文件。如果脚本有
#!
一行,您可以将其作为程序执行——shebang 中命名的解释器以脚本文件名作为参数运行。但是只有在设置了执行权限时才会这样做。另一方面,您可以直接运行解释器,例如/bin/bash scriptname
. 解释器只关心他们是否可以读取文件,他们不检查执行权限。让我从理论上解释一下。
如果一个文件或目录具有像 X 这样的执行权限,但没有其他权限,并且像 Steve 用户这样的人拥有该文件,那么 root 也可以执行该文件。
永远记住,在 Linux 中 root 可以做任何事情,对 root 没有任何限制。