本文主要是介绍Linux普通权限、特殊权限、扩展权限和Umask值介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
一.简单权限介绍
1.文件系统权限
2.三种基本权限
3.修改文件和目录的权限
4.修改文件或模流属主和属组
二.文件和目录的特殊权限
1.SUID
2.SGID
3.Sticky Bit
三.ACL扩展权限
1.设置和查看扩展权限
2.setfacl常用参数
3.删除指定扩展权限操作演示
四.umask权限掩码
1.验证一下是否是通过umask来默认创建的
2.永久修改umask值
一.简单权限介绍
1.文件系统权限
针对于属主、属组、其他人三个对象定义了三个基本字段的权限
(1)属主owner
简写为u
(2)属组group
简写为g
(3)其他人other
简写为o
2.三种基本权限
其中rw权限不会对root产生影响,x权限会造成限制
(1)r
读权限,权限数值为4(八进制),若是目录的r权限没有则只能ls却不能cd进去,文件没有r权限则不能查看
(2)w
写权限,权限数值为2,若是目录没有w权限则不能在内创建文件,若是文件没有w权限则不能编辑该文件
(3)x
执行权限,权限数值为1,用来确保目录可cd,文件可执行
3.修改文件和目录的权限
chmod命令,主要用到-R参数,表示将目录下的文件和子目录的权限都进行递归修改
(1)使用权限缩写方式
使用+/-/=为目录或文件增加/减少/赋予给定权限
[root@R9 aaa]# ll
total 0
drwx-wx-wx. 2 root root 6 Dec 27 21:23 a.txt
[root@R9 aaa]# chmod u-rw a.txt/
[root@R9 aaa]# ll
total 0
d--x-wx-wx. 2 root root 6 Dec 27 21:23 a.txt
[root@R9 aaa]# chmod g+r a.txt/
[root@R9 aaa]# ll
total 0
d--xrwx-wx. 2 root root 6 Dec 27 21:23 a.txt
[root@R9 aaa]# chmod ugo+rw a.txt/
[root@R9 aaa]# ll
total 0
drwxrwxrwx. 2 root root 6 Dec 27 21:23 a.txt
(3)使用权限数值方式
使用八进制的权限值来指定权限
[root@R9 aaa]# chmod 411 a.txt/
[root@R9 aaa]# ll
total 0
dr----x--x. 2 root root 6 Dec 27 21:23 a.txt
[root@R9 aaa]# chmod 644 a.txt/
[root@R9 aaa]# ll
total 0
drw-r--r--. 2 root root 6 Dec 27 21:23 a.txt
4.修改文件或模流属主和属组
同样主要用到-R参数,表示将目录下的文件和子目录的属主或属组都进行递归修改
(1)修改属主
chown命令
[root@R9 aaa]# ll
total 0
drw-r--r--. 2 sulibao root 6 Dec 27 21:23 a.txt
[root@R9 aaa]# ll
total 0
drw-r--r--. 2 sulibao root 6 Dec 27 21:23 a.txt
drwx-wx-wx. 2 root root 19 Dec 27 21:32 b
[root@R9 aaa]# ll b
total 4
-rw--w--w-. 1 root root 6 Dec 27 21:32 b.txt
[root@R9 aaa]# chown sulibao -R b #递归修改
[root@R9 aaa]# ll b
total 4
-rw--w--w-. 1 sulibao root 6 Dec 27 21:32 b.txt
(2)修改属组
chown或chgrp命令
[root@R9 aaa]# chown :su a.txt/ #使用冒号或者点来表示属主不变只改属组
[root@R9 aaa]# ll
total 0
drw-r--r--. 2 sulibao su 6 Dec 27 21:23 a.txt
drwx-wx-wx. 2 sulibao root 19 Dec 27 21:32 b
drwx-wx-wx. 2 sulibao root 19 Dec 27 21:32 b
[root@R9 aaa]# chown .sulibao a.txt/
[root@R9 aaa]# ll
total 0
drw-r--r--. 2 sulibao sulibao 6 Dec 27 21:23 a.txt
drwx-wx-wx. 2 sulibao root 19 Dec 27 21:32 b
[root@R9 aaa]# chgrp root a.txt/ #chgrp只修改属组
[root@R9 aaa]# ll
total 0
drw-r--r--. 2 sulibao root 6 Dec 27 21:23 a.txt
drwx-wx-wx. 2 sulibao root 19 Dec 27 21:32 b
二.文件和目录的特殊权限
包含有SUID、SGID、Sticky Bit
1.SUID
u+s,权限数值为4,映射在owner处,他指的是即使这个用户不具有该文件的权限,而设置SUID让其在运行进程时暂时获得该文件所有者的权限,但进队二进制文件有效。SUID的缩写s在这个文件的所有者有执行权限的情况下会反映为小写s,若没有执行权限则反映为大写S。如下演示。
(1)设置特殊权限
[root@R9 aaa]# ll
total 0
drw-r--r--. 2 sulibao root 6 Dec 27 21:23 a.txt #此时所有者没有执行权限
drwx-wx-wx. 2 sulibao root 19 Dec 27 21:32 b
[root@R9 aaa]# chmod u+s a.txt/
[root@R9 aaa]# ll
total 0
drwSr--r--. 2 sulibao root 6 Dec 27 21:23 a.txt #映射为大写S
drwx-wx-wx. 2 sulibao root 19 Dec 27 21:32 b
[root@R9 aaa]# chmod u+x a.txt/ #此时所有者有执行权限
[root@R9 aaa]# ll
total 0
drwxr--r--. 2 sulibao root 6 Dec 27 21:23 a.txt
drwx-wx-wx. 2 sulibao root 19 Dec 27 21:32 b
[root@R9 aaa]# chmod u+s a.txt/
[root@R9 aaa]# ll
total 0
drwsr--r--. 2 sulibao root 6 Dec 27 21:23 a.txt #映射为小写s
drwx-wx-wx. 2 sulibao root 19 Dec 27 21:32 b
(2)查询设置了SUID的文件
[root@R9 aaa]# find /root/aaa/ -perm /4000 #“/”数字表示法,数值前加上 /,表示要匹配的是该数值相应的权限位被设置了,/4000表示权限为4xxx,但至少是4000
/root/aaa/a.txt
#如下,a.txt设置了特殊权限,并且所有者具有执行权限,那么他的权限就可以表示位4744,按4744就可以匹配到,但我设置超出他的权限那么就回匹配不到
[root@R9 aaa]# ll
total 0
drwsr--r--. 2 sulibao root 6 Dec 27 21:23 a.txt
drwx-wx-wx. 2 sulibao root 19 Dec 27 21:32 b
[root@R9 aaa]# find /root/aaa/ -perm 4744
/root/aaa/a.txt
[root@R9 aaa]# find /root/aaa/ -perm 4746
2.SGID
g+s,权限数值为2,映射在group处
(1)对于文件来说,执行程序时,用户将获得该设置了SGID的文件的所属组权限
[root@R9 aaa]# chmod g+s a.txt/
[root@R9 aaa]# ll
total 0
drwsr-Sr--. 2 sulibao root 6 Dec 27 21:23 a.txt
drwx-wx-wx. 2 sulibao root 19 Dec 27 21:32 b
[root@R9 aaa]# find /root/aaa/ -perm /2000
/root/aaa/a.txt
(2)对于目录来说,设置了SGID的目录,该目录内的文件和目录都会自动归属到该目录的所属组
[root@R9 aaa]# chmod g+s b
[root@R9 aaa]# ll
total 0
drwsr-Sr--. 2 sulibao root 6 Dec 27 21:23 a.txt
drwx-ws-wx. 2 root su 6 Dec 27 22:02 b
[root@R9 aaa]# touch b/b.txt
[root@R9 aaa]# ll b
total 0
-rw--w--w-. 1 root su 0 Dec 27 22:02 b.txt
3.Sticky Bit
o+t,权限数值为1,映射在other处。这个特殊权限只对目录生效,表示若此用户对该目录有wx权限,那么该用户在该目录下的文件和目录只有这个用户和root才能删除,并且只能操作属于自己的文件资源。
[root@R9 aaa]# ll
total 0
drwsr-Sr--. 2 sulibao root 6 Dec 27 21:23 a.txt
d-wx-wx-wx. 2 root root 71 Dec 27 22:16 b
[root@R9 aaa]# chmod o+t b
[root@R9 aaa]# ll
total 0
drwsr-Sr--. 2 sulibao root 6 Dec 27 21:23 a.txt
drwxrwxrwt. 2 root root 71 Dec 27 22:16 b
[sulibao@R9 b]$ ll
total 0
-rw--w--w-. 1 root root 0 Dec 27 22:07 b.txt
-rw--w--w-. 1 root root 0 Dec 27 22:07 c.txt
-rw--w--w-. 1 root root 0 Dec 27 22:07 d.txt
-rw--w--w-. 1 root root 0 Dec 27 22:07 e.txt
-rw--w--w-. 1 root root 0 Dec 27 22:07 f.txt
-rw-r--r--. 1 su su 0 Dec 27 22:21 my #sulibao用户没办法删除su用户创建的文件
[sulibao@R9 b]$ rm -rf my
rm: cannot remove 'my': Operation not permitted
三.ACL扩展权限
这个权限又表示给特定的用户指定特定的权限
1.设置和查看扩展权限
b目录权限为000,设置允许sulibao用户进行rwx
[root@R9 aaa]# setfacl -m u:sulibao:rwx b
[root@R9 aaa]# getfacl b
# file: b
# owner: root
# group: root
user::---
user:sulibao:rwx
group::---
mask::rwx
other::---
[root@R9 aaa]# ll
total 0
drwsr-Sr--. 2 sulibao root 6 Dec 27 21:23 a.txt
d---rwx---+ 2 root root 81 Dec 27 22:21 b
[sulibao@R9 aaa]$ ll
total 0
drwsr-Sr--. 2 sulibao root 6 Dec 27 21:23 a.txt
d---rwx---+ 2 root root 81 Dec 27 22:21 b
[sulibao@R9 aaa]$ cd b
[sulibao@R9 b]$ ll
total 0
-rw--w--w-. 1 root root 0 Dec 27 22:07 b.txt
-rw--w--w-. 1 root root 0 Dec 27 22:07 c.txt
-rw--w--w-. 1 root root 0 Dec 27 22:07 d.txt
-rw--w--w-. 1 root root 0 Dec 27 22:07 e.txt
-rw--w--w-. 1 root root 0 Dec 27 22:07 f.txt
-rw-r--r--. 1 su su 0 Dec 27 22:21 my
2.setfacl常用参数
-m:设定 ACL 权限,一般需要使用“u:用户名:权限”这样的格式来指定给那个用户设置扩展权限,组也可以“g:组名:权限”
-x:删除指定的 ACL 权限
-b:删除所有的 ACL 权限
-d:设定默认 ACL 权限。只对目录生效,指目录中新建立的文件拥有此默认权限
-k:删除默认 ACL 权限
-R:递归设定 ACL 权限。指设定的 ACL 权限会对目录下的所有子文件生效
3.删除指定扩展权限操作演示
[root@R9 aaa]# setfacl -x u:sulibao b
[sulibao@R9 b]$ ll
ls: cannot open directory '.': Permission denied
四.umask权限掩码
表示通过umask值来设置新建文件或目录时默认的权限,原始情况下新建文件的默认权限值是0666,目录是0777
1.验证一下是否是通过umask来默认创建的
如何验证,我理解的是,通过原始的默认权限值去求差,如果你要新建目录默认是0733,那么就用默认的0777去减0733得出0044此umask值;若是要新建的文件默认是0622,那么就用默认的0666去减0622得出0044次umask,最后就将umask值修改为这个值即可
(1)文件
0666-预设权限值=umask值
(2)目录
0777-预设权限值=umask值
[root@R9 ~]# umask
0044
[root@R9 ~]# touch m
[root@R9 ~]# mkdir n
-rw--w--w-. 1 root root 0 Dec 27 22:32 m
drwx-wx-wx. 2 root root 6 Dec 27 22:31 n
2.永久修改umask值
[root@R9 ~]# vim /etc/profile #在最后加上
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then #UID大于199就设置umask为0002,即权限值为0775(目录),可自行修改umask 0002
elseumask 0022
fi
[root@R9 ~]# source /etc/profile #立即生效
[root@R9 ~]# mkdir sulibao
[root@R9 ~]# ll | grep sulibao
drwxr-xr-x. 2 root root 6 Dec 27 22:44 sulibao #root身份创建,其UID小于199,umask值为0022,权限值为755,(目录)
这篇关于Linux普通权限、特殊权限、扩展权限和Umask值介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!