众所周知,Linux系统中umask的默认权限掩码是0022
创建目录的默认权限=777-022=755,创建文件的默认权限=666-022=644。权限运算的时候我们一般都是用三位数字,那么0022中第一个数字到底代表什么呢?
在Linux中,除开写、读、执行三个权限,还包括suid、sgid、sticky这三种特殊权限,而0022中第一个0即代表特殊权限位。接下来,我打算研究一下sticky权限。
粘滞位权限(sticky)
1.功能
设置了粘滞位权限后,即便用户对目录有写权限,也不能删除该目录中其他用户的文件。确保该文件只能由其创建者或root删除,防止普通用户删除其他用户的文件。
2.作用对象
粘滞位权限只能针对目录设置,对于文件无效,而且都是针对其他用户(other)设置的。
3.表现形式
sticky表现为文件其他用户可执行权限位上的t或T。
若设置之前其他用户已具有可执行权限,则显示为t,否则显示为T。
数字1表示增加粘滞位权限,数字0表示取消粘滞位权限。
以下两条命令都可用于给file设置粘滞位权限。
chmod o+t file
chmod 1755 file
4.测试
test目录的属主是gd,给test加上粘滞位权限后,切换到普通用户tjp并删除test,但是删除失败。
创建一个文件test2.c,属主为root,给test2.c添加粘滞位权限后,切换到普通用户tjp并删除test2.c,删除成功。可见粘滞位权限只能针对目录设置,对于文件无效。