Ste*_*eve 33 linux root permissions
我有以下文件:
---------- 1 Steve Steve 341 2017-12-21 01:51 myFile.txt
Run Code Online (Sandbox Code Playgroud)
我将用户切换到root终端中,我注意到以下行为:
我可以读取这个文件并写入它。
我无法执行此文件。
如果我x在文件的用户权限 ( ---x------) 或组权限 ( ------x---) 或其他权限 ( ---------x) 中设置该位,那么我将能够执行此文件。
任何人都可以向我解释或向我指出一个教程,该教程解释了root用户处理文件和目录时适用的所有规则?
ilk*_*chu 41
对文件和目录的特权访问实际上取决于能力,而不仅仅是存在root与否。在实践中,root通常具有所有可能的功能,但在某些情况下,它们中的所有/许多都可以删除,或者一些给其他用户(他们的进程)。
简而言之,您已经描述了访问控制检查如何为特权进程工作。以下是不同功能对其的实际影响:
这里CAP_DAC_OVERRIDE的主要功能是,一个可以“绕过文件读取、写入和执行权限检查”的进程。这包括读取和写入任何文件,以及读取、写入和访问目录。
它实际上不适用于执行未标记为可执行文件的文件。( ) 中的注释generic_permissionfs/namei.c,在访问检查文件之前,说
读/写 DAC 始终是可覆盖的。当设置了至少一个 exec 位时,可执行 DAC 是可覆盖的。
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且仅+a在 ext2/ext3/ext4 上附加标志,这两者甚至会停止 root,并防止文件重命名等。root_squash在 NFS 中将 root 映射到 nobodyKev*_*ire 14
这与您注意到的默认权限完全一样:
读写:
默认情况下,Root 用户可以访问系统中的任何文件。您可以通过更改诸如在这里解释的属性来删除此访问权限:chattr。然后将其与能力相关联。
执行:
除非至少设置了一个执行位,否则 root 用户没有执行权限。
由myFile.txt获得chmod 000 myFile.txt。
0 no permission
1 execute
2 write
3 execute + write
4 read
5 read + execute
6 read + write
7 all
Run Code Online (Sandbox Code Playgroud)
--------- 意味着没有用户,组和其他权限。
root 用户可以不受限制地修改此文件。读/写被授予。要执行此文件,root 用户无论如何都需要使其可执行。(chmod 100, 010 或 001)
| 归档时间: |
|
| 查看次数: |
26921 次 |
| 最近记录: |