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


20

安装程序时,建议我这样做chmod 4555。好吧,如果我只使用三个数字,我就会知道值。例如

chmod 555 test-file

会给

-r-xr-xr-x

4用于写入,2用于读取,1用于执行。但是,当我这样做时:

chmod 4555 test-file

它给我

-r-sr-xr-x

因此,x更改为s。那是什么意思?


1
此处也作了说明:askubuntu.com/a/550947/72216(“关于s旗”)
Jacob Vlijm

@JacobVlijm还通过下面的其他“特殊”位更深入地解释了
托马斯·沃德

Answers:


29

您实际上可以使用4种属性集chmod

SpecialUser/OwnerGroup,和Others以该顺序,与四数chmods工作时,与第一数量可以设置特殊比特。

chmod 4555 等同于以下内容:

  • Set UID 位-以文件所有者的身份运行文件,而不管运行该文件的用户是谁
  • 用户/所有者: Read, Execute
  • 组: Read, Execute
  • 其他: Read, Execute

s在您的权限“人类可读的”字符串表示该SetUID位(在下面解释)设置。


有效地,我们可以chmod按以下方式将四数权限参数分解为特定的描述符,然后进行数学运算以确定4第一部分中的a 5是什么,下一部分中的a 等等。

请记住,####Special User/Owner GroupOthers的顺序。

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

  • Set UID-以文件所有者身份运行文件,而不管运行该文件的用户如何(显示s在该部分的人类可读权限字符串中User)= +4(--s在下方User/Owner
  • Set GID-以组的形式运行文件,而不管运行该文件的用户/组如何(显示s在该部分的人类可读权限字符串中Group)= +2(--s在下方Group
  • Sticky Bit-仅对目录有效-如果设置,则只有目录的所有者用户root才能删除目录,只有文件所有者或root可以删除目录中的文件。(显示t为该Others部分的人类可读权限字符串)= +1(--t位于下方Others

对于User/OwnerGroupOthers属性(在四号码最后三个数字chmod参数):

  • Read= +4(r--
  • Write= +2(-w-
  • Execute(对于文件),或“输入/列表项”(对于目录)= +1(--x

7

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.