![为什么“chmod 1777”和“chmod 3777”都设置粘滞位?](https://linux22.com/image/48778/%E4%B8%BA%E4%BB%80%E4%B9%88%E2%80%9Cchmod%201777%E2%80%9D%E5%92%8C%E2%80%9Cchmod%203777%E2%80%9D%E9%83%BD%E8%AE%BE%E7%BD%AE%E7%B2%98%E6%BB%9E%E4%BD%8D%EF%BC%9F.png)
要在目录上设置粘滞位,为什么这两个命令都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 位和粘性位。