Shell及Linux的权限知识


Shell的运行原理

我们使用的windows是以图形来和用户做交互的,而Linux是通过之前介绍的命令行和用户进行交互的。虽然windows和linux和用户交互的方法不同,但本质上并没有差距,图形化界面和命令行界面都是为了让用户进行便捷的操作,所谓的图形化界面还有命令行的交互方式就是我们所说的“外壳程序”。
在这里插入图片描述Linux严格意义上是一个操作系统,我们使用的Centos、redhat等都是基于Linux内核做的一些Linux发行版,我们不能直接对操作系统进行操作,因此,必须借助外壳,也就是Shell,来和kernel进行沟通。

Shell最简单的定义就是“命令行解释器”:
1)将使用者的命令翻译给核心(kernel)处理。
2)将核心的处理结果翻译给使用者。

相较于Windows中的图形化界面,我们操作的是它的图形化接口,从而完成我们的操作。Shell对于Linux有相同的作用,主要对我们的指令进行解析,解析指令给Linux内核,反馈结果通过Shell解析给用户。简单的来说,人不擅长直接和操作系统打交道,因此,诞生了Shell,通过Shell来完成人和内核之间的交互。

Shell运行的机制
1)创建子进程,让子进程进行命令行解释。
2)子进程出现任何问题,都不影响父进程Shell

注意: Shell只是所有外壳程序的统称,例如在centos 7当中的外壳程序名叫bash

Linux中权限的问题

Linux权限的概念

在Linux中有两种用户,分别是超级用户(root)以及普通用户。普通用户可以有多个,但是超级用户只能有一个。超级用户可以在Linux下做几乎任何事情,几乎不受限制,而普通用户一般只能在自己的工作目录下(/home/xxx(用户名))下工作,以及在系统上做有限的工作。

超级用户的命令提示符是“#”
在这里插入图片描述普通用户的命令提示符是“$”
在这里插入图片描述

如何实现用户之间的切换

有时候会出现权限不够的问题,此时需要从普通用户的身份切换到超级用户

语法: su 用户名
功能: 用户切换。
从普通账号切换为root账号
在这里插入图片描述
从root账号切换为普通账号
在这里插入图片描述小技巧
1)从普通账户切回root账户的时候,可以只输入su即可,然后输入root的密码
2)也可以实现普通用户到普通用户之前的切换,输入带切换用户的密码即可
3)切换用户后,若想返回上一次的用户,通过快捷键Ctrl+d实现

如何不切换用户提升当前指令的权限

但可能某些情况下,你只想提升当前指令的权限,那么不必切换到超级用户

语法: sudo 指令
功能: 提升当前指令的权限

在指令前加上sudo 即可,当然也不是加上sudo就能干任何事,系统不一定会信任你,因此需要将普通用户添加到信任列表内,此时输入sudo才会起作用,具体的修改方法后续再写。

Linux权限管理

文件访问者的分类(人)

对于用户来说,权限可以将用户分为三大类:
1、文件和文件目录的拥有者(所有者)
2、文件拥有者所在的组(文件所属组)
3、其他用户(other)

注意
1、对于一个文件而言,其拥有者、所属组和other就是由超级用户(root)和普通用户扮演。
2、在Linux当中,所有的用户都要隶属于某一个组,哪怕这个组只有你一个人,此时所属组的名字就是你的用户名。

为什么会出现所属组的概念呢?
在腾讯公司内部,现在需要两个部门同时完成一个业务,看那个部门完成的好,每个组下面有固定的成员,如果没有所属组的概念,假设项目组长需要看每个人的代码,那么就会认为项目组长以及项目组的其他成员都是other,这显然是不合适的,因此出现了所属组的这个概念。
在这里插入图片描述我们可以通过指令ll来查看某一文件或文件目录的拥有者和所属组
在这里插入图片描述: 除了文件拥有者和文件所属组之外的都叫other

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

权限涉及到某个具体的事物来说,我们还需要讨论事物本身的属性。对于文件来说,我们应该讨论其文件类型,以及是否具有可读、可写和可执行的属性。

使用指令ll,我们可以看到前面有一串字符,这串字符实际上就代表着该文件的类型和属性。
在这里插入图片描述这串字符由10个字符组成的。其中第一个字符所代表的就是该文件的文件类型
在这里插入图片描述
不同的字符代表不同的文件类型。
1)-:代表普通文件。
2)d:代表目录。
3)l:代表链接文件(类似于Windows当中的快捷方式)。
4)b:代表块设备文件(例如硬盘、光驱等)。
5)p:管道文件。
6)c:字符设备文件。
7)s:套接口文件。
注意: 在Linux当中,文件类型与文件后缀无关。

剩下的9个字符每三个为一组,分别代表该文件相对于其拥有者、所属组以及other是否拥有某种属性
在这里插入图片描述
每一组的三个字符的第一个字符代表该文件是否具有可读属性,第二个代表是否具有可写属性,第三个代表是否具有可执行属性
在这里插入图片描述
若是具有可读属性,则第一个位置的字符为r;若是具有可写属性,则第二个位置的字符为w;若是具有可执行属性,则第三个位置的字符为x。若某一位置为字符 - ,则说明不具有对应位置的属性

文件访问权限的相关设置方法

如何改变文件的访问权限

语法: chmod 选项 权限 文件名或目录名
功能: 设置文件的访问权限
常用选项: -R 递归修改目录文件的权限

格式一: 用户符号 +/-/= 权限字符
1)+:向权限范围增加权限代号所表示的权限
2)-:向权限范围取消权限代号所表示的权限
3)=:向权限范围赋予权限代号所表示的权限
用户符号:
1)u:拥有者
2)g:所属组
3)o:other
4)a:所有用户

在这里插入图片描述若要同时设置不同类用户的访问权限,则需用逗号隔开
在这里插入图片描述格式二: 三位八进制数字
将对应的八进制数转换为二进制,进而设置对应权限值
在这里插入图片描述

如何改变文件的拥有者

语法: chown 选项 用户名 文件名或目录名
功能: 修改文件的拥有者。
常用选项: -R 递归修改目录文件的拥有者。

在这里插入图片描述
注意: 修改文件的拥有者需要root用户进行操作,若是普通用户则需要进行权限提升

也可以使用chown指令同时修改文件的拥有者和所属组,将拥有者和所属组的用户名用冒号隔开即可
在这里插入图片描述

如何改变文件的所属组

语法: chgrp 选项 用户名 文件名或目录名
功能: 修改文件的所属组。
常用选项: -R 递归修改目录文件的所属组

在这里插入图片描述注意: 修改文件的所属组也需要进行权限提升

如何修改文件的掩码

我们查看新建的文件和目录,它们都有自己默认的权限
在这里插入图片描述实际上,新建文件的默认权限为0666,新建目录的默认权限为0777。其中第一位的0与特殊权限有关,我们这里不必深究,而后面三位就是权限的八进制数值表示方法,我们将其翻译为字符表示方法。

在这里插入图片描述但实际上你会发现,你所创建出来的文件和目录的权限值往往不是我们所翻译出来的值,原因就是创建文件和目录的时候还要受到umask的影响,假设默认权限是mask,则实际创建出来的文件权限是:mask&(~umask)

语法: umask 权限值
功能: 查看或修改文件掩码

我们可以通过指令umask查看文件默认掩码
在这里插入图片描述因此我们实际创建出来的文件和目录的权限值还需要进行进一步换算才能得出。首先我们将掩码的的后三位八进制换算为二进制,然后对其进行按位取反。
在这里插入图片描述
然后将之前的新建文件的默认权限值和新建目录的默认权限值分别与其进行按位与操作,得到的就是我们创建出来的文件和目录的权限值
在这里插入图片描述因此我们也可以通过修改umask来设置文件的访问权限。
在这里插入图片描述注意: 超级用户的默认掩码为0022,普通用户的默认掩码为0002

目录的权限

对于文件来说,其可读可写可执行的属性我们都知道分别代表着什么对应的操作,那对于目录来说可读可写可执行又分别代表着什么呢?
1)可读权限: 如果用户没有该目录的可读权限,则无法通过ls指令查看目录中的文件内容。
2)可写权限: 如果用户没有该目录的可写权限,则无法通过一系列指令在目录中创建文件或删除文件。
3)可执行权限: 如果用户没有该目录的可执行权限,则无法通过cd指令进入到目录当中。

那么这就会出现一个问题
只要用户拥有某目录的可写权限,就可以删除该目录当中的文件,而不论该用户是否拥有该文件的可写权限,这显然是不合理的。
在这里插入图片描述
为了解决这个不合理的问题,Linux引入了粘滞位的概念

粘滞位

语法: chmod +t 目录名
功能: 给目录加上粘滞位
当一个用户将某一个目录加上粘滞位后,该目录的权限值的最后一位变为字符“t”
在这里插入图片描述
此时另一个用户就算有该目录的可写权限,也无法删除该目录下的文件
在这里插入图片描述

当一个目录被设置为粘滞位,则该目录下的文件只能由:
1)超级用户删除。
2)该目录的拥有者删除。
3)该文件的拥有者删除。
注意: 虽然目录被加上了粘滞位,但如果用户有该目录的可写权限,则不影响其在该目录下创建文件

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值