Linux中shell外壳,用户权限,文件权限-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

在这里插入图片描述

所属专栏Linux学习❤️
>博主首页初阳785❤️
>代码托管chuyang785❤️
>感谢大家的支持您的点赞和关注是对我最大的支持❤️
>博主也会更加的努力创作出更优质的博文❤️
>关注我关注我关注我重要的事情说三遍❤️

1.shell外壳

1.1 shell外壳的定义

我们用指令执行相应的操作的基本流程如下
在这里插入图片描述
而我们的shell外壳相当于是一个中间商是指令操作与内核进行交流的通道。

Linux严格意义上说的是一个操作系统我们称之为“核心kernel“ 但我们一般用户不能直接使用kernel。
而是通过kernel的“外壳”程序也就是所谓的shell来与kernel沟通。如何理解为什么不能直接使用kernel

1.2 shell外壳的作用

  • 就如上面我们所说的为什么我们输入指令操作的时候要经过shell来与我们的操作系统交流呢而不是直接与操作系统进行交流呢
    我们举几个生活中的例子吧

就比如我们成年了都要办理身份证而我们办理身份证的时候去的地方是公安局由公安局向国家帮我们申请办理身份证而这个时候我们就可抽象认为要办理身份证的那个人就是指令操作而公安局人员就是shell外壳国家就是我们的操作系统。而这个时候我们能不能直接越过公安局人员直接向国家申请身份证呢虽然说是可以的但是你知道办理一个身份证的具体流程以及办理身份证所需的各种材料证明吗最重要的是去哪里可以找到国家办理身份证呢所以这个时候公安局人员就会帮助我们一切问题而我们只需要告诉他们我们需要办理身份证并且公安局人员还会检查要办理身份证的这个人是不是我们国家的是不是偷渡过来的检查完后公安局人员就会走具体的流程办理向国家申请帮你办理身份证。等到办理完成后由国家把身份证发送到公安局人员手里公安局人员再联系你过来拿身份证。所以这个时候我们的公安局人员扮演了一个很重的角色。

所以shell外壳的作用就是

  1. 用户不能直接与操作系统/图形化界面进行交流所以shell外壳充当中介过程。
  2. 将使用者的命令翻译个核心kernel处理。
  3. 同时将核心的处理结果翻译个使用者。
  4. 对用户输入的指令进行检查合法性。

对比windows GUI我们操作windows 不是直接操作windows内核而是通过图形接口点击从而完成我们的
操作比如进入D盘的操作我们通常是双击D盘盘符.或者运行起来一个应用程序。
shell 对于Linux有相同的作用主要是对我们的指令进行解析解析指令给Linux内核。反馈结果在通过内核运
行出结果通过shell解析给用户。

1.3 shell的原理

shell再处理指令的时候会对指令进行一次判断低风险或者高风险。

  1. 如果是低风险的话就由shell自行传达个操作系统而shell本质其实是一个执行起来的程序进程,系统启动期间一直存在。
  2. 如果有风险的话shell都会通过创建一个子进程的方式让子进程执行指令。

我们也可以看到我们的shell外壳
在这里插入图片描述

  • 这里就会有疑问了为什么这里的外壳不是shell而是bash呢其实shell是外壳的统称centos下的外壳是bash。

而我们再Linux下我们看到的在这里插入图片描述 其实就是我们bash这叫做命令行解释器。

  • 注每次我们进行xshell登陆的时候操作系统OS都会给当前登陆用户新启动一个shellbash。

2.Linux用户权限

2.1创建普通用户

Linux下有两种用户超级用户root、普通用户。

  1. 超级用户可以再linux系统下做任何事情不受限制
  2. 普通用户在linux下做有限的事情。

超级用户的命令提示符是“#”普通用户的命令提示符是“$”

  • 我们来用root超级用户创建一个普通用户。
    adduser 用户名——创建用户
    passwd 用户名——设置密码。

这个是以$开头的是普通用户
在这里插入图片描述

而我们的root用户是以#开头的。
在这里插入图片描述

2.2 用户之间的切换

命令su [用户名] / su - [用户名]
功能切换用户。
例如要从root用户切换到普通用户user则使用 su user。 要从普通用户user切换到root用户则使用 su
rootroot可以省略此时系统会提示输入root用户的口令

  • su与su - 这两个指令基本上相同只不过su - 是以root身份重新登陆一次。
    做个比方就是假如当前用户是chuyang然后用su root用root用户登陆此时我们的权限就是root但是文件内容还是chuyang的。
    但是如果是su - root的话就是直接登陆到了root用户了。

  • 刚才我们创建了一个普通用户现在我们用普通用户切换回root用户。
    我们用su root切换到root用户是要输入密码的。

在这里插入图片描述

  • 而我们用root用户切花到其他其他普通用户是不需要密码的因为超级用户不受限制有最高权限。

在这里插入图片描述

  • 而且我们root有用户是可以直接修改普通用户的密码的不需要知道原先普通用户的密码也可以直接进行修改。

  • 再两个普通用户之间进行切换的话都是需要输入对方的密码。
    在这里插入图片描述

2.3 sudo指令

sudo对指定的命令进行提权

  • 我们使用root超级用户的时候是可以直接查看到我们普通用户的文件的并且也可以执行。
    在这里插入图片描述
    在这里插入图片描述

  • 但是我们使用普通用户是没办法访问root用户下的文件的并且也没法访问其他普通用户的文件。而sudo指令可以给予普通用户部分root的权限也就是说普通用户可以拥有root的使用权限。

在这里插入图片描述

  • 但是这个时候我们可以看到我们还要输入密码这个密码是当前用户的密码不是root的密码但是我们执行了sudo指令为什么他会给我们报错呢原因也很简单我们要使用root的权限而且还不用输入root的密码那我们还要root用户干嘛直接每个普通用户都使用sudo使用root的权限。所以要使用sudo指令我们要使用root用户手动把普通用户添加到sudoers这个配置文件中就有点类似于root的白名单只有在这个白名单上的普通用户才有资格使用root的权限。

而具体怎么添加我们后期的学习当中会讲解。

3.Linux文件权限

3.1文件访问者的分类人

我们对文件的权限无非是这三个权限文件的读权限r文件的写权限w文件的执行权限x。

  • 文件访问者的分类人
类名解释
u—User拥有者文件和文件目录的所有者
g—Group所属组文件和文件目录的所有者所在的组的用户
o—Others其他其它用户
  1. 这个表示文件的属性
    在这里插入图片描述

  2. 这个表示文件的拥有者
    在这里插入图片描述

  3. 这个表示文件的所属组
    在这里插入图片描述

  4. 除了拥有者和所属组的其他都是other。

我们来解释一下这些属性。

  • 首先拥有者user的话就不用过多的讲解了就是我们我们当前用户所创建的一个文件我们那chuyang这个用户来解释一下。就是我们在chuyang这个用户下创建一个文件qfw这个用户能访问吗答案是不能应为我在chuyang这个用户下创建的文件拥有者是chuyang这个用户其他普通用户是访问不了的。

  • 而至于所属组我们可以理解为我们在大学里我们知道大学对应在各个专业而每个专业都会分几个半我们把同属于一个专业但是不是一个班级的学生分为一个所属组也就是说在每个班级里只有是同一个班级的学生才能享受到来自班级老师提供的学习文件其他班级的学生拿不到这个学习资料。现在回到刚才的问题是不是我在chuyang这个用户创建的文件qfw这个用户一定访问不了吗答案肯定不是的只要我们的qfw和chuyang这两个用户所属同一个组就可以共享其文件访问。

之所以会涉及到这些属性的问题终归都是为了在访问文件这一块的要求那也就是说这些属性的涉及都是为了访问文件做的铺垫也就是访问文件的权限。

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

在这里插入图片描述
一一对应着我们Linux中的信息
在这里插入图片描述

  • 文件类型
文件类型所属意思
d文件夹
-普通文件
l软链接类似Windows的快捷方式
b块设备文件例如硬盘、光驱等
p管道文件
c字符设备文件例如屏幕等串口设备
s套接口文件
  • 这些对应着我们属性栏的第一列
    在这里插入图片描述

  • 而后面的一大串字符串三个为一组分别对应着r读w写x执行权限操作
    在这里插入图片描述
    注这里的权限顺序都是从左到右一次是拥有者所属组other。他们的权限一次是rwx。如果没有权限的话就是用“-”表示。

在这里插入图片描述

3.3 chmod指令

功能设置文件的访问权限
格式chmod [参数] +/-)权限 文件名
常用选项
R -> 递归修改目录文件的权限
说明只有文件的拥有者和root才可以改变文件的权限

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

我们的file.txt刚开始的权限拥有者读写权限。所属组和other都只有读权限。
在这里插入图片描述

  • 现在我们对file.txt文件的拥有者加上x(执行权限
    在这里插入图片描述

  • 也可对file.txt的所属组加上wx读和执行权限
    在这里插入图片描述

  • 也可以对other删除r读权限。
    在这里插入图片描述

  • 也可以给other加上rwx所有权限
    在这里插入图片描述

  • 也可把拥有者所属组other的权限全部去除
    在这里插入图片描述
    也可以使用a——all的意思
    在这里插入图片描述

3.4三位8进制数字更改权限

我们把上面的权限变换成我们计算机熟悉的二进制位来理解。
有权限就是1没有权限就是0。也就是所一个所属的权限范用8进制来取值范围就是0-8。于是我们就可以用8进制的方式来更改我们的权限。

在这里插入图片描述

  • 给file.txt的拥有者所属组other都加上全部权限
    在这里插入图片描述
  • 删除other的wx权限
    在这里插入图片描述

3.5 权限匹配问题

  • 注意假设我们有一个a.out的可执行程序
    在这里插入图片描述

现在我们执行一下
在这里插入图片描述

发现是可以执行的那现在我们需改一下拥有者和所属组的权限然后再次执行以下文件
在这里插入图片描述

  • 这里我们的a.out的拥有者虽然没有x执行权限但是所属组有x执行权限那为什么没办法执行文件呢
    原因就是Linux的匹配规则
    当一个账号他在权限和文件权限匹配的时候它自己的账号和文件的拥有者身份和所属组者身份一次进行匹配一旦匹配成功了就不会在匹配了。
    现在来解释一下上面出现的状况。当前的用户是qfw拥有者和所属组都是qfw那么在执行这个文件的时候用户一次跟拥有者所属组进行匹配发现和拥有者匹配成功了就不会再次往下匹配了。然后开始匹配文件权限而拥有者的文件权限没有x执行权限所以就会报出权限不够的警告。

3.6 chown 和 chgrp指令

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

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

我们先切换到root用户这里因为我们的chuyang和qfw都还没进入root白名单所以还无法使用sudo指令。
在这里插入图片描述

  • 例如我们把text.txt文件的拥有者改成root
    在这里插入图片描述
  • 把text.txt的所属组改成root
    在这里插入图片描述
    先在root用户中把a.out的拥有者改成chuyang
    再切换为qfw用户

在这里插入图片描述

现在我们再次执行a.out:

会发现不会报错了而是直接执行了。这也就再次验证了我们的匹配权限。qfw用户先跟拥有者chuyang匹配匹配不成功跟所属组匹配匹配成功再匹配文件权限有x执行权限所以就可以执行。

注root用户无视权限直接执行

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: shelllinux

“Linux中shell外壳,用户权限,文件权限-CSDN博客” 的相关文章