当我安装一个程序时,它建议我做chmod 4555
. 好的,如果我只使用三个数字,我就知道价值。例如
chmod 555 test-file
会给
-r-xr-xr-x
4 个用于写入,2 个用于读取,1 个用于执行。但是,当我这样做时:
chmod 4555 test-file
它给了我
-r-sr-xr-x
所以,x
改为s
. 那是什么意思?
当我安装一个程序时,它建议我做chmod 4555
. 好的,如果我只使用三个数字,我就知道价值。例如
chmod 555 test-file
会给
-r-xr-xr-x
4 个用于写入,2 个用于读取,1 个用于执行。但是,当我这样做时:
chmod 4555 test-file
它给了我
-r-sr-xr-x
所以,x
改为s
. 那是什么意思?
实际上有 4 个属性集可以通过
chmod
.Special
,User/Owner
,Group
, 并且Others
按照这个顺序,当使用四个数字的 chmods 时,第一个数字是可以设置的特殊位。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
)它被称为
SETUID
位。如果它是由chmod 4555 test-file
(在您的情况下)设置的,则test-file
任何用户都可以执行,就好像该用户是文件的所有者一样。设置该
SETUID
位后EUID
,无权以其他方式(通过正常权限,例如0744
)执行文件的用户的有效用户 ID () 将采用文件所有者的 EUID 并可以执行文件。