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

Mas*_*gol 23 command-line chmod

当我安装程序时,它建议我执行chmod 4555. 好的,如果我只使用三个数字,我就知道值。例如

chmod 555 test-file
Run Code Online (Sandbox Code Playgroud)

会给

-r-xr-xr-x
Run Code Online (Sandbox Code Playgroud)

4 个写,2 个读,1 个执行。但是,当我这样做时:

chmod 4555 test-file
Run Code Online (Sandbox Code Playgroud)

它给了我

-r-sr-xr-x
Run Code Online (Sandbox Code Playgroud)

于是,x改为s。那是什么意思?

Tho*_*ard 36

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

Special, User/Owner, Group, 和Others按照这个顺序,当使用四位数的 chmods 时,第一个数字是可以设置的特殊位。

chmod 4555 相当于:

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

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


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

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

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

  • Set UID- 以所有者身份运行文件,而不管运行它的用户如何(s在部分的人类可读权限字符串中显示User)= +4(--sUser/Owner
  • Set GID- 无论运行文件的用户/组如何,都将文件作为组运行(显示s在部分的人类可读权限字符串中Group)= +2(--sGroup
  • Sticky Bit- EFFECTIVE ON DIRECTORIES ONLY - 如果设置,则只有目录的所有者用户root可以删除目录,并且只有文件所有者root可以删除其中的文件。(显示t在部分的人类可读权限字符串中Others)= +1(--tOthers

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

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


hee*_*ayl 8

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

当该SETUID位被设置时EUID,没有权限以其他方式执行文件的用户的有效用户 ID ( )0744将获取文件所有者的 EUID 并可以执行文件。