Linux普通权限、特殊权限、扩展权限和Umask值介绍

2023-12-28 00:21:32

目录

一.简单权限介绍

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
else
 ? ? ?  umask 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,(目录)

文章来源:https://blog.csdn.net/weixin_64334766/article/details/135257844
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。