Linux操作系统有关权限的深刻理解

avatar
作者
猴君
阅读量:5

目录

一、用户及用户之间的切换

1.两种用户

在学习LInux操作系统的权限之前,我们要认识LInux中的两种用户:

1.超级用户(root用户)
2.普通用户

超级用户可以再linux系统下做任何事情,不受限制
而普通用户只能做有限的事情
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
在这里插入图片描述在这里插入图片描述

2.用户之间的切换

root用户 >>> 普通用户

su + 用户
这里是引用

普通用户 >>> root用户

su输入root用户密码
在这里插入图片描述

注意:在LInux系统中输入密码时是看不到密码的

二、LInux权限管理

1.文件访问者类别

文件访问者(角色)有三种:拥有者 所属组 other
在这里插入图片描述
前者为拥有者,即文件和文件目录的所有者
后者为所属组,即文件和文件目录的所有者所在的组的用户
两者都不是为other

每个用户在不同的文件和目录中都有自己对应的角色

2.文件类型及属性

2.1类型

我们知道在Windows系统中,是文件后缀(.txt/.c/.png)区分不同的文件类型的
但Linux的文件类型不通过后缀区分,而是通过一种特殊的权限格式表示

在这里插入图片描述
这种格式由10个字符组成,分为四部分:文件类型、所有者权限、组权限和其他用户权限,以及一个可选的执行位(对于目录和某些特殊文件)
第一个字符决定了Linux的文件类型,例如上面的d,除了d还有一些文件类型字符

-:普通文件,文本,源代码,图片,库,可执行文件等
d:目录文件
l:链接文件(类似于Windows下的快捷方式)
p管道文件
b:block,块设备文件(磁盘)
c:字符设备文件(屏幕,终端,显示器,键盘)

不过虽然Linux不通过它识别文件类型,但还是推荐使用:

1.LInux下的一些指令需要后缀识别,如gcc需要编译.c后缀的源代码
2.使用后缀可以更好地让人们识别

2.2 属性

我们可以使用ls指令显示文件或目录的详细信息
在这里插入图片描述
以上述图举例:
1.d表示文件类型

2.rwxrwxr-x(九个字符):这是文件或目录的权限部分。它由三组字符组成,每组三个字符,分别代表文件所有者(user)、所属组(group)和其他人(others)的权限。下面会详细讲解

3.2:这是硬链接的数量。对于目录来说,这个数字至少是2,因为每个目录至少有两个硬链接:一个是目录名本身,另一个是上级目录中的.项(代表当前目录)。如果有子目录或文件链接到这个目录,这个数字还会增加。(现在不用理解)

4.xiaoliu(第一个):这是文件或目录的所有者的用户名
5.xiaoliu(第二个):这是文件或目录所属的组的名称。在这个例子中,所有者和所属组的名字相同,但这并不是必须的。

6.4096:这是文件或目录的大小,以字节为单位。对于目录来说,这个数字通常表示目录本身在文件系统中的大小,而不是目录内所有文件和子目录的总大小。

7.Jul 18 15:53:这是文件或目录最后修改的时间。

8.b:这是文件或目录的名称。

综上所述,这行信息告诉我们b是一个目录,其所有者和所属组都是xiaoliu,它的大小是4096字节,最后修改时间是7月18日15:53,文件或目录的权限设置允许所有者、所属组成员有读、写和执行权限,而其他人只有读和执行权限。

file指令(识别文件的详细类型)

file 文件
在这里插入图片描述
a的详细类型为目录

3.文件权限

3.1.文件权限值的表示方法

在这里插入图片描述
以上述为例:
rwxrwxr-x是文件或目录的权限部分。

它由三组字符组成,每组三个字符,分别代表文件所有者(user)、所属组(group)和其他人(others)的权限
每组可以放置三个字符:依次可以放置r w x或者-

-:表示无此权限
r:有可读权限
w:有可写权限(包括创建、删除文件或目录)
x:有可执行权限(执行权限意味着可以搜索该目录)

权限位还可以转化成二进制位,分别对应000 000 000
比如 :
rwx rwx rwx 111 111 111 表示为 777
rw- rw- rw- 110 110 110 表示为 666

3.2 文件权限的访问

3.21 文件权限访问的本质

1.在交接文件权限访问之前,我们要明白权限根本上是限制人(角色)的,限制人(角色)能还是不能
2.操作对象(文件)一定要有对应的满足人的需求的属性(操作对象的属性 --文件权限属性 --r w x)

正是因为我有了这个身份,我访问的文件也有我需要的属性,我才能够正确去执行我的权限

比如我能上学不是因为我是 xiaoliu ,而是因为我是个学生,又比如我不能够在力扣上看电影,哪怕你把会员冲爆也没用,因为它不具备看电影这个属性

3.22 用户执行文件的权限规则

在执行文件时,首先看的是身份,看你是拥有者,所属组还是other,然后再匹配对应的权限
如果你是所属组,就会匹配所属组的文件权限,有对应的权限才能执行,且只会匹配一次,是什么身份就只能匹配自己的权限

比如即使拥有组有对应的权限,但是因为你是所属组,所以只会匹配所属组的权限,如果想匹配,就只能指令加权或者切换到拥有者的身份

总而言之是什么身份就匹配什么身份的权限,且只能匹配自己的

但凡是都有例外,上述规则对root不管用,root具有超级权限,几乎无视权限

3.23 更改权限位(rwx)

使用chmod指令更改权限位,只有文件的拥有者和root才可以改变文件的权限

1.字符模式

+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

例:

chmod u+r a

在这里插入图片描述

2.数字模式

数字模式将权限表示为三位八进制数,每位数字分别代表用户(u)、组(g)和其他(o)的权限。
权限的数值由读取(r=4)、写入(w=2)和执行(x=1)权限的数字值相加得出

例:

chmod 000 a

在这里插入图片描述

3.24 更改拥有者和所属组

只有超级用户(root)或具有适当权限的用户(sudo 提权)才能更改文件或目录的拥有者和所属组

在Linux系统中,更改文件或目录的拥有者(owner)和所属组(group)分别可以通过chown和chgrp命令来实现。
但是,chown命令也可以同时更改拥有者和所属组

  • 更改拥有者:

sudo+ chown 用户 文件 (使用root 就不用sudo)

  • 更改所属组

sudo +chgrp 用户 文件

  • 同时更改

sudo+ chown 用户(拥有者)/用户(所属组) 文件 (使用root 就不用sudo)

3.25 sudo指令提权

指令提权:作为普通用户以root权限执行 在前面加sodu
一般sodu提权会失败,需要将自己加入到 sudoers中去,即加入root的信任白名单

3.26目录权限

1.进入一个目录需要x权限 ,如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限
(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件
2.查看目录中的文件需要r权限 ,r决定是否可以进行对文件属性信息进行查看的权利,而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档
3.写入需要w权限

3.27.起始与最终权限(umask)

我们创建一个新文件是,文件会有自带的默认权限
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/451597cf33bf44fa97fe38
在LInux中普通文件起始权限是666 目录文件的起始权限为 777
但这里普通文本默认权限却是664,目录是775
为什么呢?
原因是在LInux中有一个权限掩码umask(不同的LInux系统umask可能不同)

在这里插入图片描述
起始掩码需要通过掩码转化为最终权限(从起始权限去掉umask中的权限)

那掩码umask有什么作用呢?
权限掩码umask的作用允许用户去定制一个文件被创建时候的默认权限

默认权限的转化的公式为:起始权限 & (~umask)=最终权限

0002 --》 002 --》000 000 010
110 110 110(普通文件起始权限 666)
000 000 010 (掩码umask)
111 111 101 (~umask)
110 110 100 (~umask&起始权限=最终权限)

3.28 文件删除权限、粘滞位

1.删除:一个文件能否被删除,不取决于文件本身,而取决于文件所在的目录的拥有者是否拥有 ‘w’ 权限

对于一个目录中的文件,如果我拥有w权限,就可以对这个目录下的文件进行创建和删除

2.粘滞位LInux给other新增了一个权限t(粘滞位),给共享目录中的other设置的一个权限位,具有x的意义

同时也进一步对目录权限进行特殊限定

该目录里面的文件,只有root或者文件的拥有者有权利进行删除,其他人一概不允许

在这里插入图片描述

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!