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, ExecuteRead, ExecuteRead, Execute将s在您的权限“人类可读的”字符串表示该SetUID位(在下面解释)设置。
实际上,我们可以将四位数的chmod权限参数分解为特定的描述符,如下所示,并进行数学计算以确定4第一部分中的 a5是什么,下一部分中的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- EFFECTIVE ON DIRECTORIES ONLY - 如果设置,则只有目录的所有者用户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,没有权限以其他方式执行文件的用户的有效用户 ID ( )0744将获取文件所有者的 EUID 并可以执行文件。