当我安装程序时,它建议我执行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/Owner
。Group
Others
chmod 4555
等同于以下内容:
Set UID
bit - 无论哪个用户正在运行该文件,都以所有者身份运行它- 用户/所有者:
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(--t
下Others
)
对于User/Owner
、Group
和Others
属性(四位数chmod
参数中的最后三位数字):
Read
= +4 (r--
)Write
= +2 (-w-
)Execute
(针对文件)或“进入/列出项目”(针对目录)= +1 (--x
)
答案2
它被称为SETUID
位。如果它被设置chmod 4555 test-file
(在你的情况下),那么test-file
任何用户都可以执行,就好像该用户是文件的所有者一样。
当SETUID
设置该位时,EUID
没有权限执行文件的用户的有效用户 ID(),否则(通过正常权限,例如0744
),将采用文件所有者的 EUID 并可以执行该文件。