假设我们有以下文件,该文件归用户root和组所有root:
-rw-r----- 1 root root 54 2017-12-18 04:21 1.txt
Run Code Online (Sandbox Code Playgroud)
并假设我们有一个进程fsuid,root但与fsgid除root.
该文件的用户权限表示所有者用户可以读取它和写入它,但不能执行它。但我认为既然进程有一个fsuidof root,那么文件的用户权限就不适用于该进程,因此进程将能够读写和执行文件,对吗?
现在假设我们有一个进程fsgid,root但有一个fsuid除了 之外的其他用户root。
该文件的组权限表示所有者组可以读取它但不能写入和执行它。现在我认为在这种情况下,进程没有对文件的完全访问权限,只有文件的组权限适用于进程,对吗?
规则如下:
因此,对于 root 用户来说,这无关紧要——但对于其他用户来说,这是适用的最具体的三元组权限。因此,在您的示例中,如果用户既是组的所有者又是组的成员,则使用的是所有者三元组(而不是组三元组)。所以如果组有读写权限,但是拥有者只有读权限;那么所有者将只被允许读取文件 - 即使他的组成员身份也应该让他写入文件。组的其他(非所有者)成员将被允许读取和写入文件。
如果需要,文件的所有者总是可以为自己添加更多权限 - 有时程序可能会为您完成。例如,如果您有一个写保护的文件(例如权限 r--r-----),一些编辑器将允许您无论如何(通常在确认之后)写入它们。编辑器以您的身份运行,因为您拥有该文件并且可以更改其权限,所以该编辑器可以删除写保护并允许您保存该文件。
+++
这意味着拥有文件并获得读写权限的是 root 用户 - 所有者(root)也可以更改文件的权限。并且允许根组的成员阅读它。其他用户既不能读、写也不能执行文件。(因为它是一个文本文件,所以无论如何执行它可能没什么意义。)
Linux 系统上的许多文件都有 root-user 作为它的所有者和 root-group 作为它的组。虽然,传统上各种系统用户和系统组(如 bin、sys、proc、operator)拥有许多文件而不是 root。例如,二进制文件(可执行程序)通常将 bin-user 和/或 bin-group 作为所有权(例如 bin:bin 或 root:bin)。
对此的例外是必须以 root 身份运行的可执行文件 - 它们必须由 root 用户拥有。通常程序在执行程序的用户的许可下执行。如果您运行该命令ls,它将以您的权限运行,因此无法显示您不允许列出的目录(如其他用户的目录)。另一方面,如果一个命令以 root 权限运行,它可以访问整个系统(这就是为什么你不想在大多数可执行文件上访问)。
一个很好的例子是passwd-command 可以让您更改密码。这以 root 身份运行,并为任何用户提供对用于存储用户和密码数据库的文件的有限访问权限。
rwsr-xr-x root:root /usr/bin/passwd
s=x+S,其中 x 是执行权限,S 作为所有者运行或作为组运行,取决于它是为所有者还是组三元组设置。
所以 root-user 是所有者;并获得读、写和执行权限。root-group 是组,有读取和执行权限。而其他用户也获得了读取和执行权限。此外,可执行文件将以其所有者的权限运行 - 即。root - 而不是具有执行它的用户的权限(正常情况下),这要归功于所有者三元组中的“s”(u+s)。
另一个例子,这次来自 BSD(一个 UNIX 操作系统):
rws-x--- root:wheel /bin/su
这意味着可执行文件su始终以其所有者身份运行 - 根。该 root 用户可以读取、写入和执行它。轮组的成员只能执行它,但不能读取(例如复制)它。并且其他用户不能读取、写入或执行它。(该命令也su存在于 Linux 上,但在这里所有用户都可以执行它——尽管它仍然以 root 用户身份运行。)
其他程序也可以作为某个系统用户(和组)运行——例如,apache网络服务器通常作为 www-data-user(和 www-data-group)运行。这样一来,由于缺乏不属于它的权限,如果受到损害,它就不会造成太大的损害。
您的第二点是正确的,组成员root可以读取该文件,但不能写入或执行它。
您的第一点是不正确的 - 即使root用户也无法执行该文件。root可以轻松更改权限以使其可执行,但在执行该步骤之前无法实际执行它。
需要注意的一个重要警告是,对于 shell 脚本或其他纯文本脚本,可以“获取”它们来执行,而无需设置可执行位。在此示例中,如果文件的内容1.txt实际上是 bash 脚本,即使具有 0650 权限,您也可以运行bash 1.txt并执行文件内的命令,有效地运行脚本并似乎绕过执行权限位。
警告可以在这里看到:
# ./myecho
Hi there!
# chmod -x myecho
# ./myecho
-bash: ./myecho: Permission denied
# sh myecho
Hi there!
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9371 次 |
| 最近记录: |