为什么“chmod 1777”和“chmod 3777”都设置粘滞位?

为什么“chmod 1777”和“chmod 3777”都设置粘滞位?

要在目录上设置粘滞位,为什么这两个命令都chmod 1777有效chmod 3777

答案1

     1            1             1         1   1   1      1   1   1      1   1   1
___________   __________   __________    ___ ___ ___    ___ ___ ___    ___ ___ ___ 
setUID bit    setGID bit   sticky bit     user           group          others  

该分组中的每个数字(也称为八进制,因为它是以 8 为基数)代表 3 位。如果你把它变成二进制,那就容易多了。

1 = 0 0 1
3 = 0 1 1
5 = 1 0 1
7 = 1 1 1

因此,如果您使用 1777、3777、5777 或 7777,您将设置粘性位,因为第三列将为 1。但是,对于 3777、5777 和 7777,您还需要设置其他位(第一列的 SUID,以及第二列的 SGID)。

相反,该位置的任何其他数字(最多 7)都不会设置粘性位,因为最后一列不会是 1 或“on”。

2 = 0 1 0
4 = 1 0 0
6 = 1 1 0

答案2

作为参数传递给 chmod 的权限被指定为八进制价值。值中的每个数字代表三位。如果给出三个数字,则您正在为文件的所有者、组和其他人(其他所有人)设置读取、写入和执行位。如果给出四个数字,则最左边的数字设置 setuid、setgid 和粘性位。八进制 1 设置粘滞位。八进制 2 设置 setgid 位。八进制 2 + 八进制 1 是八进制 3,它设置 setgid 位和粘性位。

相关内容