当前位置: 首页>>技术教程>>正文


4 位 chmod 参数(例如 `chmod 4555`)中第一个数字是什么?

,

问题描述

当我安装程序时,它建议我执行 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 时,按顺序为 SpecialUser/OwnerGroupOthers ,其中第一个数字是可以设置的特殊位。

chmod 4555 等同于以下内容:

  • Set UID 位 – 无论哪个用户正在运行该文件,都以所有者身份运行该文件

  • 用户/所有者:Read, Execute

  • 群组:Read, Execute

  • 其他:Read, Execute

权限的 ‘human readable’ 字符串中的 s 表示已设置 SetUID 位(如下所述)。


实际上,我们可以将 four-number chmod 权限参数分解为如下特定描述符,并进行计算以确定第一部分中的 4 是什么,下一部分中的 5 是什么,依此类推。

请记住,#### 按顺序是 Special User/Owner GroupOthers

对于 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/OwnerGroupOthers 属性(four-number chmod 参数中的最后三个数字):

  • Read = +4 ( r-- )

  • Write = +2 ( -w- )

  • Execute (用于文件),或‘进入/列出项目’(用于目录) = +1 (--x)

次佳回答

它被称为 SETUID 位。如果它由 chmod 4555 test-file 设置(在您的情况下),那么任何用户都可以执行 test-file,就好像该用户是文件的所有者一样。

当设置了 SETUID 位时,没有权限执行文件的用户的有效用户 ID(EUID)(通过正常权限,例如 0744)将获取文件所有者的 EUID 并可以执行该文件。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/14569.html,未经允许,请勿转载。