在下面的访问权限中,我不确定第二个“root”代表什么。
第一个是拥有权限的所有者rws
(s 代表什么?),第二个是名为 root 的组。它是一个只有 root 用户才能加入的特殊组吗?
$ ls -l /usr/bin/sudo
-rwsr-xr-x 1 root root 157760 Jan 11 2016 /usr/bin/sudo
如果我错了,那么上面的访问权限是什么意思?
答案1
in代表意义s
rws
setuid
设置用户 ID。这是一个特殊的权限位,允许程序在任何用户运行时以有效的所有者的 UID,在本例中为 root。因此,当您作为普通用户运行sudo
可执行文件时,实际上是以 root 身份运行。此权限位存在安全风险,应仅在绝对必要时应用。
setuid
来自的位的解释Linux 命令行作者:William E. Shotts Jr:
当应用于可执行文件时,它会将有效用户 ID 从实际用户(实际运行程序的用户)设置为程序所有者的有效用户 ID。通常,这被赋予超级用户拥有的几个程序。当普通用户运行“setuid root”程序时,该程序将以超级用户的有效权限运行。这允许程序访问普通用户通常被禁止访问的文件和目录。显然,因为这会引起安全问题,所以必须将 setuid 程序的数量保持在绝对最低限度。
root
列表中的第二个是团体拥有该文件,并且只有用户 root 在组 root 中:
$ getent group root
root:x:0:
以下是具有不同用户和组所有权的文件的示例:
-rw-r----- 1 root shadow 1456 Nov 22 20:08 /etc/shadow
这意味着该文件只能由 root 读取和写入,但组成员阴影也可以读取该文件。