一个系统一般都是有多个账号使用的,而有些目录和文件需要赋予其他用户可读写的权限,比如/tmp/a.tmp
这就有一个问题了,比如A在/tmp目录下放的文件a.tmp,而B也需要有/tmp的权限,他就可以删除这个a.tmp文件;
如果只想让b有读写这个文件的权限,但是没有删除这个文件的权限该怎么办呢?这时候就可以利用t键位,粘着位权限
测试如下:
01 |
#切换到a用户下 |
02 |
[root@ test tmp] # su a |
03 |
[a@ test tmp]$ ll -d /tmp |
04 |
drwxrwxrwx 2 root root 4096 Oct 28 23:55 /tmp |
05 |
#创建a.tm文件并配置任何人都有最大的777权限 |
06 |
[a@ test tmp]$ touch a.tm |
07 |
[a@ test tmp]$ chmod 777 a.tm |
08 |
[a@ test tmp]$ ls -l a.tm |
09 |
-rwxrwxrwx 1 a a 0 Oct 28 23:55 a.tm |
10 |
#查看,这时候任何人都可以对a.tm做任何操作 |
01 |
#现在我们对/tmp目录赋予粘着位t权限 |
02 |
[root@ test tmp] # chmod +t /tmp |
03 |
[root@ test tmp] # ls -dl /tmp |
04 |
#查看权限已经多了一个t |
05 |
drwxrwxrwt 2 root root 4096 Oct 28 23:59 /tmp |
06 |
#切换到账号b下,删除a.tm,报错了无法删除 |
07 |
[root@ test tmp] # su b |
08 |
[b@ test tmp]$ rm -r a.tm |
09 |
rm : cannot remove `a.tm': Operation not permitted |
10 |
#查看b对a.tm拥有完全权限的,但是也无法删除 |
11 |
[b@ test tmp]$ ls -l a.tm |
12 |
-rwxrwxrwx 1 a a 0 Oct 28 23:55 a.tm |
13 |
#测试b对a.tm文件的写入和读取,完全没有问题 |
14 |
[b@ test tmp]$ echo b- test >a.tm |
15 |
[b@ test tmp]$ cat a.tm |
16 |
b- test |
17 |
18 |
19 |
增加粘滞位: chmod +t /tmp |
20 |
删除粘滞位: chmod -t /tmp |
至此,目的已经达到了,让一个账号对一个文件有读写的权限却无法删除~
备注:拥有t粘着位权限的目录下的文件,除了属主用户外,root用户也可以删除。