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

你可能感兴趣的:(Linux,linux,权限,扩展权限,特殊权限,Umask)