Linux文件权限漏洞,只要目录具有写的权限,其下的文件都可以强制写,所以不要轻易把写的权限给一个目录。
以root用户登录创建目录bbbb
[root@serv01 learning] mkdir bbbb
[root@serv01 learning]# chmod 777 bbbb/
[root@serv01 learning]# ll bbbb/ -d
drwxrwxrwx. 2 root root 4096 Sep 20 22:11 bbbb/
以linuxidc用户登录在bbbb目录下创建文件test.txt
[linuxidc@serv01 bbbb]$ echo "hello world" > test.txt
[linuxidc@serv01 bbbb]$ ll
total 4
-rw-rw-r--. 1 linuxidc linuxidc 12 Sep 20 22:14 test.txt
[linuxidc@serv01 bbbb]$ cat test.txt
hello,world
以linuxidccom用户登录查看和修改文件wq!,可以看到文件的拥有者和所属组发生了改变,我们要怎样才能避免这个漏洞呢?
[linuxidccom@serv01 bbbb]$ vim test.txt
[linuxidccom@serv01 bbbb]$ ll
total 4
-rw-rw-r--. 1 linuxidccom linuxidccom 6 Sep 20 22:15 test.txt
[linuxidccom@serv01 bbbb]$ cat test.txt
hello
我们可以使用t粘滞位解决这个问题,对于目录,如果有t的权限,只有用户自己才可以删除,其他用户不可以,root用户不考虑,具有最大权限。只有设置在权限位的其他用户,只针对目录。当目录本身要具有写的权限,比如rwt,覆盖了x,如果没有x的权限,则变成T。我们可以看到tmp目录就是这样的设计:
[linuxidc@serv01 learning]$ cd /tmp
[linuxidc@serv01 tmp]$ touch aa01.txt
[linuxidc@serv01 tmp]$ touch aa02.txt
[linuxidc@serv01 tmp]$ ls -ld /tmp
drwxrwxrwt. 3 root root 4096 Sep 20 22:49 /tmp
[linuxidc@serv01 tmp]$ ll
total 4
-rw-rw-r--. 1 linuxidc linuxidc 0 Sep 20 22:49 aa01.txt
-rw-rw-r--. 1 linuxidc linuxidc 0 Sep 20 22:49 aa02.txt
我们可以这样修改目录bbbb的权限,这样这个目录下的文件就只有文件的拥有者才能删除和修改这个文件了。
[linuxidc@serv01 tmp chmod o+t bbbb/