linux文件除了有r、w、x三种权限外,还有3个特殊的权限,分别是setuid、setgid和stick bit。
1.1 setuid
当二进制文件(命令)被setuid后,任何用户用该命令时以该命令所属主去执行某个文件。
例如:chmod u+s usr/bin/touch 前后分别创建a.hadoop和b.hadoop
1.2 setgid
setgid使用步骤:
(1)创建目录项目 mkdir project (一般权限是755)
(2)添加用户组 groupadd project
(3)修改目录project的用户组为project chgrp project(用户组) project(目录)
(4)为用户组添加用户 usermod -G project hadoop
usermod -G project hbase
usermod -G project hbase
(5)修改目录project用户组权限 chmod g+s project
(6)在project目录下就可以随意增删文件了,同用户组文件实现共享
例:
1.3 stick bit
在1.2中,如果我们想每个用户可以新添加、删除自己的文件,但不能删除别人的文件,该怎么办呢?
这时,stick bit 就起作用了,若某个目录被设置了stick bit 后,在该目录下的用户可以增删自己文件,但不能使别人的文件。
1.4 小结
(1)setuid针对的是文件,setgid针对的是目录(或文件),而stick bit 针对的是对目录下的权限更精确的调整。
(2)用户执行命令(touch),开启一子进程,setuid后,该进程的uid为命令(touch)的所属者。