在Linux操作系统中,当我们创建一个用户之后,使用umask查看用户掩码时,系统显示的是4位数,和我们知道的三位数的权限不同,那么不同之处就在于umask显示的第一位其实是特殊权限位,那么特殊权限位有哪些呢?下面我来一一讲解其用法!
[user5@izm5e10l2aupfmvytvqxp1z test2]$ umask
0002
我首先讲解一下我们用户的整个权限获取过程:
1.首先我们的用户登录,所谓的登录其实就是启动一个shell进程,该进程的属组和属主为该用户的属组和属主
2.当用户执行某个命令时,其实就是运行某个文件(linux一切皆文件),而要对这个文件进行执行,那么就需要用户的权限满足改文件的权限,列如:/tmp/test.sh,权限为rwxr-xr--,那么属主和属组主只要可以满足一个,该用户就可以执行该文件
一、SUID
通过上面的列子,你可能会问,如果我希望让所有的用户都可以执行这个文件呢?
有两个方法可以做到:
第一种:chmod o+x ,这个方法相信大家都知道,修改普通用户的权限为可执行
第二种:chmod u+s,这个方法就是我们今天要讲的SUID,使用之后,属主权限为:rws
SUID的特点:当一个文件拥有SUID之后,那么任何用户执行该文件时都会以该文件属主的权限去运行
列如: cat /etc/passwd,只有管理员才可以看到里面的内容,其他用户时无法查看的
如果我们给cat命令添加SUID之后,那么所有的用户执行这个命令时都会以属主为Root的权限来执行cat 命令,那么所有的用户都可以查看passwd文件
当然,这个SUID设置时一定要注意,不然很可能产生安全问题
二、SGID
通过上面的列子,也许你已经知道了,SGID权限设置之后,所有附加组的用户都会以该目录的属组权限进行操作,而不是自己的基本组
具体用法: chmod g+s
列如: chmod g+s test test目录原始权限为rw-rw-r-- 属主:test 属组:test,执行命令后权限变为rw-rwsr--
当附件组为test的用户在改文件下创建文件时,将会以test组的权限创建,列如 touch /test/a
那么a的权限就会变成 rw-rw-r-- 属组为test 属主还是a
当我们希望建立一个目录,然后所有的团队成员都可以在该目录下创建和编辑文件时,可以用此方法
三、Sticky
如果我们我们希望建立一个目录,然后所有的团队成员都可以在该目录下创建和编辑文件,但是我们又不希望可以随意删除其他用户的权限时,如何处理呢?
这时Sticky权限就派上用场了,Sticky的特点为:当一个目录拥有Sticky权限后,该目录下的文件只有属主可以进行删除,而属组即使拥有w权限,也无法删除
用法: chmod o+t 权限使用之后其他用户的权限位变为rw-rwsr--t
这些用法需要大量的练习,不然很不容易理解