文件的特殊权限:
大家应该记得在linux当中使用umask查看文件的反向掩码时它是四位的,为什么呢?听我慢慢道来...
[root@station21 ~]# umask
0022
大家应该知道并了解linux安全上下文的机制吧:
进程访问文件时的权限匹配机制: 进程的发起者:进程属主 进程的属组:通常是进程属主的基本组, 如果一个进程想访问文件,首先去看一看这个进程的属主和文件的属主是不是一样,如果一样则应用属主权限.否则则检查进程的属主所属的主其中之一是否与文件的属组相同(包括附加组)如果有则应用属组权限,否则应用其它权限
如果hadoop执行了: passwd命令,而passwd命令进程的属主:hadoop 属组:hadoop,他是否能够访问/etc/shadow这个文件?如果hadoop无法访问这个文件它又是如果能改密码的呢?
[root@station21 ~]# ls -l /etc/shadow ---------- 1 root root 941 Feb 22 22:13 /etc/shadow
可执行文件:suid
任何用户执行此可执行文件时,不再以用户自己的身份当作进程的属主,而是以文件的属主当作进程的属主;所以任何人在执行这个命令都是以root的身份去执行,任何人权限对root用户都形同虚设,所以普通执行passwd命令对/etc/shadow进行更改是完全可以的
-rws:s:suid suid表现为文件属主执行权限位上的s或S 如果此文件对该用户此前有执行权限就是 x: s 如果在此之前该用户对此文件没有执行权限的话就是: -: S
如何设定suid权限: chmod u+s FILE ... 或者:假设原来的权限是755 chmod 4755 FILE..
注释:我们使用root的用户身份到/bin目录下将cat命令cp到/tmp目录下
注释:我们使用root的用户身份到/etc目录下将passwd文件cp到/tmp目录下,然后将其权限改为600
注释:切换到使用su命令切换到hadoop用户然后使用/tmp下的cat查看/tmp/passwd,发现权限不够
注释:然后使用root的身份将可执行程序/tmp/下的cat加上suid
注释:然后su到hadoop用户验证其效果
目录文件:sgid
具有sgid的目录,用户在此目录下创建文件时,新建文件的属组不再是用户所属的基本组,而是目录的属组; chmod g+s FILE ... 或者:假设原来的权限为755 chmod 2755 ... sgid表现为文件属组执行权限位上的s或S x: s -: S
注释:为了演示效果,我们将java用户以及hadoop用户的附属组添加其jdk
注释:为先演示效果,我们先将指定目录的组权限添加为w权限然后将其目录的宿组改为JDK
注释:我们在没更改sgid之前用户在此目录创建的文件都属于自己的基本组
注释:我们将其为此目录添加sgid
注释:在此之后创建的文件都属于目录的属组
注释:更改sgid之后,我们使用hadoop用户更改java用户的文件是允许的
注释:更爱sgid之后,我们使用java用户删除hadoop的文件也是被允许的!
注释:更改sgid之后属组权限那一行x权限为s
粘滞位:sticky
对于公共可写的目录,用户可创建文件,可以删除自己的文件,但无法删除别的用户的文件 chmod o+t FILE ... 或者:假设原来的权限为755chmod 1755 FILE ... sticky表示为文件其它用户执行权限位上的t或T: x: t -: T 其实粘滞位是对sgid能力的补充,我们来看一看!
注释:将其之前测试的目录添加sticky,更改之后其为蓝色
注释:然后使用其hadoop用户更改java用户的文件,还是可以改呀,那我们看还能不能删除其文件,删除文件时不允许的。,看来sticky这种方式的限制只能防君子,不能防小人呀