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个属性集。
User/Owner
四位chmod时,该顺序中的Special
, User/Owner
, Group
和Others
,第一个数字是可以设置的特殊位。
chmod 4555
等同于以下内容:
-
Set UID
位 – 无论哪个用户正在运行该文件,都将该文件作为所有者运行 - 用户/所有者:
Read, Execute
- 组:
Read, Execute
- 其他:
Read, Execute
用于权限的“人类可读”字符串中的s
表示SetUID
位(如下所述)已设置。
实际上,我们可以将四个数字的chmod
权限参数分解为特定的描述符,如下所示,并进行数学运算以确定第一部分中的4
是什么,下一部分中的5
,依此类推。
请记住, ####
是该订单中的Special
User/Owner
Group
和Others
。
对于Special
属性(四个数字chmod
参数中的第一个数字):
-
Set UID
– 运行文件作为所有者,无论用户是否运行它(在User
部分的人类可读权限字符串中显示为s
)= + 4(--s
User/Owner
下的--s
) -
Set GID
– 无论运行它的用户/组如何都将文件作为组运行(在Group
部分的人类可读权限字符串中显示为s
)= + 2(--s
下的--s
) -
Sticky Bit
– 仅对目录有效 – 如果设置,只有目录的所有者用户和root
可以删除目录,只有文件所有者或root
可以删除其中的文件。 (在Others
部分的人类可读权限字符串中显示为t
)= +1(--t
下的--t
)
对于User/Owner
, Group
和Others
属性(四个数字chmod
参数中的最后三个数字):
-
Read
= +4(r--
) -
Write
= +2(-w-
) -
Execute
(对于文件),或’进入/列出项目’= +1( – x)
它被称为SETUID
位。 如果它是由chmod 4555 test-file
(在您的情况下)设置的,那么test-file
可以由任何用户执行,就像用户是文件的所有者一样。
当SETUID
位置位时,没有权限执行文件的用户的有效用户ID( EUID
)(通过正常权限,例如0744
)获取文件所有者的EUID并且可以执行该文件。