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

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。这是什么意思?

答案1

实际上您可以通过 使用 4 组属性集chmod

Special按此顺序,当使用四位数字的 chmod 时,第一个数字是可以设置的特殊位User/OwnerGroupOthers

chmod 4555等同于以下内容:

  • Set UIDbit - 无论哪个用户正在运行该文件,都以所有者身份运行它
  • 用户/所有者:Read, Execute
  • 团体:Read, Execute
  • 其他的:Read, Execute

s您的权限的‘人类可读’字符串表示位(SetUID如下所述)已设置。


实际上,我们可以将四位数的chmod权限参数分解为如下的具体描述符,然后进行计算以确定4第一部分中的 a 是什么、5下一部分中的 a 是什么,依此类推。

请记住,这####是按该顺序Special User/Owner Group进行的Others

对于Special属性(四位数chmod参数中的第一个数字):

  • Set UID- 无论运行该文件的用户是谁,都以所有者身份运行它(显示s为部分的人性化权限字符串User)= +4(--s在 下User/Owner
  • Set GID- 无论运行该文件的用户/组是谁,都将其作为组运行(如部分s中人类可读的权限字符串中所示Group)= +2(--s在 下Group
  • Sticky Bit- 仅对目录有效 - 如果设置,则只有目录的所有者用户root才能删除目录,只有文件所有者或root可以删除​​其中的文件。(显示t为部分的人性化权限字符串Others)= +1(--tOthers

对于User/OwnerGroupOthers属性(四位数chmod参数中的最后三位数字):

  • Read= +4 ( r--)
  • Write= +2 ( -w-)
  • Execute(针对文件)或“进入/列出项目”(针对目录)= +1 ( --x)

答案2

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

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

相关内容