【Linux权限管理】-LMLPHP

目录

1 Linux权限的概念

2 文件访问者的分类(人)

 3 文件类型和访问权限(事物属性)

chmod

chown:

chgrp:

4 文件掩码

umask

5 目录的权限

6 粘滞位

7 权限的总结


1 Linux权限的概念

如何从普通用户转到超级用户呢?

命令:

su root (root可以省略)

 从超级用户转为普通用户命令:

su username

 另外再复习一下Linux下新建用户的指令是:

useradd username

删除用户的命令是:

userdel -r username

为新用户设新密码的命令是:

passwd username

2 文件访问者的分类(人)


 3 文件类型和访问权限(事物属性)

 有了上面的了解后,假如我们想修改文件的权限那应该怎么办呢?例如我想将text.c

这个文件的拥有者拥有可执行权限应该怎样操作呢?

另一个问题:假如我想更换该文件的拥有者和所属组应该咋办?

这个时候我们就可以使用chown 和 chgrp 指令了:

chown:

功能 :修改文件的拥有者
格式 chown [ 参数 ] 用户名 文件名

chgrp:

功能 :修改文件或目录的所属组
格式 chgrp [ 参数 ] 用户组名 文件名
常用选项 -R 递归修改文件或目录的所属组

4 文件掩码

通过上面我们知道:

超级用户建立一个普通文件(不包括可执行文件)的默认权限是 :rw- r-- r--  (644)

而建立一个目录的默认权限是:rwx r-x r-x  (755)

那么为什么是这样子的呢?

系统新建文件夹起始权限 =0666 ,新建目录起始权限 =0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask 的影响。
而umask就是文件掩码。那最终权限(也就是系统的默认权限)与起始权限和文件掩码有啥关系呢?
最终权限=mask & ~umask (mask是文件起始权限)
在超级用户下建立
文件:
110 110 110  (666)
111 101 101 &
------------
110 100 100  (644)

目录:
111 111 111  (777)
111 101 101 &
------------
111 101 101  (755)

假如我们想修改系统默认的文件掩码呢?

可以使用命令:

umask XXX

我们不妨跳转到普通用户下来使用一下:

[grm@VM-8-12-centos ~]$ umask 012
[grm@VM-8-12-centos ~]$ touch tmp.txt
[grm@VM-8-12-centos ~]$ mkdir -p dir
[grm@VM-8-12-centos ~]$ ll
total 4
drwxrw-r-x 2 grm grm 4096 Dec 18 13:24 dir
-rw-rw-r-- 1 grm grm    0 Dec  2 22:30 grmfile
-rw-rw-r-- 1 grm grm    0 Dec 18 13:23 tmp.txt

【Linux权限管理】-LMLPHP

 通过计算我们也能很快速的得到上面的结果。


5 目录的权限

其中比较容易出错的就是这个可执行权限了,进入一个目录首先需要的就是可执行权限,这点大家务必要牢记。


6 粘滞位

于是 , 问题来了 ~~
换句话来讲 , 就是只要用户具有目录的写权限 , 用户就可以删除目录中的文件 , 而不论这个用户是否有这个文件的写权限 .
这好像不太科学啊 , 我张三创建的一个文件 , 凭什么被你李四可以删掉 ? 我们用下面的过程印证一下:
我们用root用户创建一个共享目录(也就是其他用户都能够在里面建立文件的目录)将其权限都打开
【Linux权限管理】-LMLPHP
然后其他用户以及root就可以往里面添加自己创建的文件了
【Linux权限管理】-LMLPHP

 但是问题来了,如果有一天grm把bxz惹毛了,bxz一气之下就把grm所创建的文件给干掉了,操作系统会同意这样做的吗?

【Linux权限管理】-LMLPHP

 我们发现好像还真的就删除了,这合理吗?还是一个bug?

所以我们就引出了粘滞位的概念:

当一个目录被设置为 " 粘滞位 "( chmod +t ), 则该目录下的文件只能由

 我们为share目录增加一个粘滞位:

[root@VM-8-12-centos /]# chmod +t share
[root@VM-8-12-centos /]# ll
total 84
lrwxrwxrwx.   1 root root     7 Mar  7  2019 bin -> usr/bin
dr-xr-xr-x.   5 root root  4096 Jul 28 11:37 boot
drwxr-xr-x    4 root root  4096 Nov  4 17:34 cpp
drwxr-xr-x    2 root root  4096 Nov  5  2019 data
drwxr-xr-x   19 root root  3020 Sep 20 16:33 dev
drwxr-xr-x.  95 root root 12288 Dec  2 22:04 etc
drwxr-xr-x.   4 root root  4096 Dec  2 22:02 home
lrwxrwxrwx.   1 root root     7 Mar  7  2019 lib -> usr/lib
lrwxrwxrwx.   1 root root     9 Mar  7  2019 lib64 -> usr/lib64
drwxr-xr-x    3 root root  4096 Oct  3 20:34 linux
drwx------.   2 root root 16384 Mar  7  2019 lost+found
drwxr-xr-x.   2 root root  4096 Apr 11  2018 media
drwxr-xr-x.   2 root root  4096 Apr 11  2018 mnt
drwxr-xr-x.   4 root root  4096 Sep 20 15:18 opt
dr-xr-xr-x  117 root root     0 Sep 20 16:33 proc
dr-xr-x---.   8 root root  4096 Nov 23 21:26 root
drwxr-xr-x   25 root root   880 Nov 15 20:05 run
lrwxrwxrwx.   1 root root     8 Mar  7  2019 sbin -> usr/sbin
drwxrwxrwt    2 root root  4096 Dec 18 13:58 share
drwxr-xr-x.   2 root root  4096 Apr 11  2018 srv
dr-xr-xr-x   13 root root     0 Sep 26 20:53 sys
drwxrwxrwt.   8 root root  4096 Dec 18 12:56 tmp
drwxr-xr-x.  14 root root  4096 Jan  8  2021 usr
drwxr-xr-x.  20 root root  4096 Jan  8  2021 var

【Linux权限管理】-LMLPHP

 我们发现other的最后一位权限由x变成了t

接下来我们再删除来试试:

[bxz@VM-8-12-centos share]$ ll
total 8
-rw-rw-r-- 1 bxz  bxz   0 Dec 18 13:53 bxz1
-rw-rw-r-- 1 bxz  bxz   0 Dec 18 13:53 bxz2
-rw-rw-r-- 1 grm  grm  30 Dec 18 13:52 grm1
-rw-rw-r-- 1 bxz  bxz  91 Dec 18 13:54 nxz1
-rw-r--r-- 1 root root  0 Dec 18 13:51 root1
-rw-r--r-- 1 root root  0 Dec 18 13:51 root2
[bxz@VM-8-12-centos share]$ rm -rf grm1
rm: cannot remove ‘grm1’: Operation not permitted

【Linux权限管理】-LMLPHP

 很明显该操作现在已经不被允许了。


7 权限的总结

12-19 19:33