【Linux】权限

        欢迎来到小林的博客!!
      ️博客主页:✈️小林爱敲代码
      ️博客专栏:Linux之路
      ️社区: 进步学堂
      ️欢迎关注:点赞收藏✍️留言

目录

  • 一、shell命令以及运行原理
  • 二、权限的概念
    • su指令
  • 三、权限的管理
    • 3.1 文件访问者分类
    • 3.2 文件类型和访问权限(事物属性)
      • 3.2.1文件类型
      • 3.2.2 文件访问权限
    • 3.3 访问权限的设置
    • 3.4 umask
    • 3.5 目录的权限
  • 权限总结:

一、shell命令以及运行原理

Linux严格意义上说的是一个操作系统,我们称之为 核心(kernel) ,但我们一般用户,是不能够直接使用kernel的。

而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。简单理解,就是kernel是你看中的对象,但是你不好意思和她说你喜欢她。这时候就需要媒婆shell 去替你和她说你喜欢她

Shell的最简单定义:命令行解释器(command Interpreter) 主要包含:
1.将使用者的命令翻译给核心(kernel)处理。
2.同时,将核心的处理结果翻译给使用者。
【Linux】权限_第1张图片

然而我们在操作windows的时候,也不是直接操作windows内核,而是通过windows GUI图形接口,点击,从而完成我们的操作(比如点击我的电脑,就会出现一个界面)。

所以windows 和它的图形界面GUI之间的关系就 相当于 shell 和Linux关系,它们有相同的作用,主要是给用户提供一个与操作系统内核沟通的”桥梁“ 。

打个比方 :
假如你喜欢你的邻居翠花。但你不好意思直接和她说。所以你找到了村里的王婆,让王婆替你去和翠花说。 而翠花收到了你的请求,把你的请求传递给了翠花。翠花收到了你传递给王婆的请求,就会给王婆反馈,是接受你还是拒绝你。此时王婆再把翠花的答案带给你。这里面的王婆就是shell,翠花就是linux内核。
【Linux】权限_第2张图片

二、权限的概念

Linux下有两种用户:超级用户(root)、普通用户。
超级用户:意为上帝,可以再linux系统下做任何事情,不受限制。
普通用户:只能权限范围内的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

su指令

语法:su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。

【Linux】权限_第3张图片

三、权限的管理

3.1 文件访问者分类

在linux系统中,我们把文件访问者分为三类。
1.文件和文件目录的所有者:u—User
**2.文件和文件目录的所有者所在的组的用户:g—Group **
3.其它用户:o—Others (除了1和2之外的人)

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

3.2.1文件类型

怎么查看文件的类型和访问权限呢? 很简单,我们只需要在文件所在目录执行ll指令即可。

【Linux】权限_第4张图片
我们可以看到这里有很多属性。
以第一个为例。每一个所代表的意思如下
【Linux】权限_第5张图片

我们可以看到普通文件,第一个是用-来表示的,而test2是个目录,第一个是用d来表示的。
所以以下是总结出来的,第一个字符对应的文件类型

字符 文件类型
d 文件夹
- 普通文件
l 软链接(类似Windows的快捷方式)
b 块设备文件(例如硬盘、光驱等)
p 管道文件
c 字符设备文件(例如屏幕等串口设备)
s 套接口文件

文件类型明白了,那么我们再来看看文件的访问权限

3.2.2 文件访问权限

第二个字符开始 rw-是一对。
第一个r 代表read,代表文件具有可读权限。如果为-,则代表不具有可读权限。
第二个w代表write ,代表文件具有可写权限,如果为-,则代表不具备可写权限。
第三个x 代表execute,代表文件具有可执行权限,如果是目录则代表有可进入的权限。如果为-,则不具备该权限。

字符表示 说明
r - - 只读
- w - 只写
- - x 只能执行
r w - 可读可写不能执行
r - x 可读可执行不能写
- w x 可写可执行不能读
r w x 可写可读可执行
- - - 无权限

3.3 访问权限的设置

1. 怎么设置访问权限呢?
那这里我们要先介绍一个指令。
指令1 : chmod
功能:设置文件的访问权限
格式:chmod [参数] 权限(rwx) 文件名

我们的a.txt是具有 rw权限的。那我们来取消掉r权限。
【Linux】权限_第6张图片我们输入 : chmod u-r a.txt 意思是去掉 u(用户所属者)的r(可读)权限 。
【Linux】权限_第7张图片

我们可以发现 wyl不具备 a.txt的r权限了。那么我们用cat命令来读一下a.txt。
【Linux】权限_第8张图片
它会告诉我们没有权限。

-是去掉权限的意思,那么+就是加上权限的意思。具体的参数表如下。

权限操作符

操作符 代表意义
+ 向权限范围增加权限代号所表示的权限
- 向权限范围取消权限代号所表示的权限
= 向权限范围赋予权限代号所表示的权限

用户代表符号:

符号 代表用户
u 文件的拥有者
g 拥有者同组用
o 其它用户
a 所有用户

当然,我们也可以用八进制来设置
假如我们的 a.txt文件是 :
rw- rw- r–
那我们可以转化成对应的二进制,1代表有该权限,0代表没有该权限。那么就是:
110 110 100
我们转换成8进制就是,664
那么 rwx rwx rwx 对应的8进制就是111 111 111 ,也就是777
我们输入chmod 777 a.txt试试
【Linux】权限_第9张图片
我们发现a.txt的权限被改成了rwx rwx rwx,那我们再改回664试试。
【Linux】权限_第10张图片
所以,我们如果嫌 u+r这样改太麻烦,也可以选择用八进制来修改权限

2. 如何修改文件的拥有者?
指令 : chown

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

例子:

【Linux】权限_第11张图片
我们可以发现,本来是拥有者是属于root的,但是把所属者改成了wyl。

注意
如果把拥有者从普通用户给到root,需要在前面加上sudo 提权,还得把当前用户加入到root的信任名单。

3. 如何修改所属组群?
指令:chgrp
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组

例子:
【Linux】权限_第12张图片
我们把root所属者的rootfile1.txt和rootfile2.txt的所属组改成了wyl。

3.4 umask

umask的功能
查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask

举个例子:
我们先用 umask来查看当前掩码
【Linux】权限_第13张图片
当前的掩码是 0002,那么我们新建一个file.txt文件和dir目录。

【Linux】权限_第14张图片
掩码我们只用看后三位,也就是002,这是一个8进制数。我们把它转为二进制就是000 000 010。
然后文件的权限码是 0666,我们也看后三位,这也是一个8进制数,我们把它转换为二进制就是 110 110 110

然后我们把掩码对应的 000 000 010取反,得到 111 111 101 ,然后再把这个和权限码进行按位与。
111 111 101
110 110 110
110 110 100
最后得到的结果是 110 110 100,刚好对应我们的file1.txt文件的权限。rw- rw- r–。

那我们再来看看目录文件
目录的权限码是 777,转换成二进制为 111 111 111,然后与 上面已经转换过的 111 111 101进行按位与
111 111 111
111 111 101
111 111 101
最后的结果为 111 111 101,也就意味着目录的创建后的默认权限为 rwx rwx r-x。

修改权限值
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。

例子: umask 333
【Linux】权限_第15张图片

然后我们创建一个文件。

【Linux】权限_第16张图片
这时候创建后的文件只有可读权限。

3.5 目录的权限

使用sudo 分配权限
# chmod 740 /etc/sudoers
# vi /etc/sudoer

用户切换
普通用户切换至超级用户 : sudo su-
超级用户切换至普通用户: su 用户名

目录权限
可执行权限: 如果目录没有可执行权限, 则无法cd到目录中
可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件

换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限。

目录没有r权限
我们用 chmod u-r dir 去掉dir目录的读权限
【Linux】权限_第17张图片
然后我们进入目录
【Linux】权限_第18张图片
进去后我们发现我们压根无法看见文件。这就是目录没有r权限的结果。

目录没有x权限

【Linux】权限_第19张图片
我们的目录权限是 rwx rwx r-x。 那么我们用 chmod u-x dir把执行权限干掉。
【Linux】权限_第20张图片
那我们在cd进目录试试。
【Linux】权限_第21张图片
我们会发现我们无法进入。那我们用ll读它试试。

【Linux】权限_第22张图片
我们发现,它只能读到里面的文件名,其他信息无法查看。所以目录的x权限决定着你能否进入这个目录。

目录没有w权限

如果我们不想目录的文件被删除,可以去掉它的w权限
那么我们恢复dir的x权限。去掉它的w权限。
【Linux】权限_第23张图片
然后进入目录删除文件

【Linux】权限_第24张图片

提示我们无法删除。
但是问题来了,如果我们想再新增文件呢?我们试试能不能新增文件。

【Linux】权限_第25张图片
提示我们没有权限新增文件。 把目录的w权限去掉,可以限制无法删除该目录的文件,但同时。也无法新增文件了。

如果让一个目录可以新增文件,但不能删除别人的文件,该怎么做呢?
这时候我们就需要一个东西,那就是粘滞位

当一个目录被设置了粘滞位之后,它只能:
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

所以我们一般让root来设置这个粘滞位。这样除了超级管理员root,没有人可以删除目录。
设置粘滞位的格式: chmod t 目录名
那我们恢复dir目录的写权限。并把它的所有者和所属组设为root,这样普通用户就会o(其他人)的身份操作目录。然后设置一下它的粘滞位。
【Linux】权限_第26张图片

再用root创建一个文件。
【Linux】权限_第27张图片

那我们删除一下roofile.txt试试。
【Linux】权限_第28张图片
我们无法删除这个文件。那我们新增文件试试。

【Linux】权限_第29张图片
我们发现可以新增文件。那我们试试删除。
【Linux】权限_第30张图片
我们可以删除属于自己的文件,但不能删除别人的文件。


权限总结:

1. 目录的可执行权限是表示你可否在目录下执行命令。
2. 果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限,但最多也只能看到里面的文件名。
3. 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档

你可能感兴趣的:(Linux之路,linux,windows,服务器)