1.特殊权限
特殊权限分为三种:setuid,setgid,sbit
1)setuid
- 用户运行起来程序叫做进程,用户用cat命令查看一个文件,看的是这个用户对这个文件有没有权限
简称suid,可以对二进制文件进行使用,对二进制文件设置suid权限后,普通用户使用该二进制文件对一个文件进行操作时,会使用这个二进制文件属主的身份对文件进行操作。
可以使用chmod u+s 或者 chmod 4---来设置权限
[root@oldboy-1 ~] ll /usr/bin/cat
-rwxr-xr-x. 1 root root 54160 Oct 31 2018 /usr/bin/cat
[root@oldboy-1 ~]# ll /etc/shadow
----------. 1 root root 1692 Aug 8 15:14 /etc/shadow
#密码信息存放在/etc/shadow中,但是对任何人没有权限,除了root外,任何用户不能查看,编辑该文件
#但是,加了setuid权限之后,普通用户会继承cat命令属主的身份,也就是说,普通用户会以root身份查看该文件,那么就可查看该文件的内容
2)setgid
setgid,可以对目录进行附加setgid权限,对目录附加setgid权限之后,在其目录下创建的目录或文件默认都将继承上一级目录的属组
chmod g+s 或者 chmod 2---设置setgid权限
[root@oldboy-1 ~] chmod g+s test/
[root@oldboy-1 ~] ll -d test/
drwxr-sr-x. 2 root GG 6 Aug 6 17:19 test/
[root@oldboy-1 ~] mkdir test/admix
[root@oldboy-1 ~] ll -d test/admix/
drwxr-sr-x. 2 root GG 6 Aug 8 16:11 test/admix/
#给test目录赋予setgid权限,到test目录下创建的文件或者目录默认属组就是test的属组,这样我们可以实现同一个属组内的文件共享
3)sbit
sbit是粘连位,对一个目录设置粘连位之后,每个目录自己创建的文件或目录,只能自己删除,别的用户删除不了,并且不能进行编辑(root用户除外)
chmod o+t 或者chmod 1--- 设置sbit权限
[root@oldboy-1 home] chmod 1777 test/
[root@oldboy-1 home] ll -d test/
drwxrwsrwt. 3 root GG 19 Aug 8 16:11 test/
[syy@oldboy-1 test]$ touch file1
[sg@oldboy-1 test]$ rm -rf file1
rm: cannot remove ‘file1’: Operation not permitted
#给test目录设置粘连位之后,syy用户创建了一个文件file1,但是sg用户删除不了,所以,这就是sbit权限的作用
2.高级权限
chattr可以设置一些权限给目录或者文件,这些权限是高于普通权限的,如果修改之后,也可以对root进行权限限制,chattr 可以使用+ - = 来设置权限
chattr +a #可以对文件或者目录使用,a选项可以对文件进行上锁,是文件只能追加,不能做其他的操作,这个命令常用于一些重要的日志文件
chattr +i #可以对文件进行上锁,任何人对这个文件不能做任何操作,包括root,这个命令常用于/etc/passwd ,通常公司用户创建足够之后,就不会再允许别人创建用户,可以用chattr+i实现
lsattr #查看文件的高级权限
3.umask
umask是系统创建默认权限的依据,umask涉及到的相关文件/etc/bashrc /etc/profile ~/.bashrc ~/.bash_profile
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
#如果一个用户的uid大于199 并且 如果用户的属主等于属组,那么umask=002,不然,umask就是022
ps:1)一般文件的权限都是666-022=644
一般目录的权限都是777-022=755
2)如果文件的权限有奇数,那么,权限就会加一
例如 如果umask=033
那么 666-033=633 后面两位是奇数,就得加一 权限就是644
3)用umask 后面加值,可以临时的修改umask值
网友评论