问题描述
当我安装程序时,它建议我执行 chmod 4555
。好的,如果我只使用三个数字,我知道值。例如
chmod 555 test-file
会给
-r-xr-xr-x
4 表示写入,2 表示读取,1 表示执行。但是,当我这样做时:
chmod 4555 test-file
它给了我
-r-sr-xr-x
那么, x
变成了 s
。这是什么意思呢?
最佳回答
实际上您可以通过 chmod
使用 4 组属性集。
当使用 four-number chmods 时,按顺序为 Special
、 User/Owner
、 Group
和 Others
,其中第一个数字是可以设置的特殊位。
chmod 4555
等同于以下内容:
-
Set UID
位 – 无论哪个用户正在运行该文件,都以所有者身份运行该文件 -
用户/所有者:
Read, Execute
-
群组:
Read, Execute
-
其他:
Read, Execute
权限的 ‘human readable’ 字符串中的 s
表示已设置 SetUID
位(如下所述)。
实际上,我们可以将 four-number chmod
权限参数分解为如下特定描述符,并进行计算以确定第一部分中的 4
是什么,下一部分中的 5
是什么,依此类推。
请记住,####
按顺序是 Special
User/Owner
Group
和 Others
。
对于 Special
属性(four-number chmod
参数中的第一个数字):
-
Set UID
– 无论运行该文件的用户是谁,都以所有者身份运行它(在User
部分的人性化权限字符串中显示为s
)= +4(User/Owner
下的--s
) -
Set GID
– 无论运行该文件的用户/组是谁,都将其作为组运行(在Group
部分的人性化权限字符串中显示为s
)= +2(Group
下的--s
) -
Sticky Bit
– 仅对目录有效 – 如果设置,则只有目录的所有者用户和root
可以删除该目录,并且只有文件所有者或root
可以删除其中的文件。(在Others
部分的人性化权限字符串中显示为t
)= +1(Others
下的--t
)
对于 User/Owner
、 Group
和 Others
属性(four-number chmod
参数中的最后三个数字):
-
Read
= +4 (r--
) -
Write
= +2 (-w-
) -
Execute
(用于文件),或‘进入/列出项目’(用于目录) = +1 (--x
)
次佳回答
它被称为 SETUID
位。如果它由 chmod 4555 test-file
设置(在您的情况下),那么任何用户都可以执行 test-file
,就好像该用户是文件的所有者一样。
当设置了 SETUID
位时,没有权限执行文件的用户的有效用户 ID(EUID
)(通过正常权限,例如 0744
)将获取文件所有者的 EUID 并可以执行该文件。