【Linux】权限篇(一)

1. 前言

在之前的博客中已经学习了一些相关的操作,这次来分享的是与Linux的权限有关的一些笔记。 在正片开始之前,先来讲讲外壳(shell)。

2. shell

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

我们知道:

  1. 在Linux上面,大部分指令就是文件。
  2. 用户在执行某种功能的时候,不是直接让操作系统执行对应的指令的,而是先交给外壳程序。 这句话是什么意思呢?
在这里插入图片描述

实际上用户是不能直接访问操作系统的,一般在操作系统外面都会封装一层外壳程序,也就是shell程序。

最典型的外壳有两种,一种是图形化界面,另一种是命令行。有的将图形化界面直接写道操作系统里面,比如windows。 就像我们电脑在开机的时候,最后一步就是在加载图形化界面。

在这里插入图片描述

shell是什么呢? 介于用户和操作系统之间的软件,也就是命令解释器。 它的作用是:

  1. 将使用者的命令翻译给核心(kernel)处理。
  2. 同时,将核心的处理结果翻译给使用者。

那为什么会有shell?

  1. 用户不善于和操作系统(OS)之间交互。
  2. shell外壳的存在,可以对请求进行合法性检查,变相的保护OS。
在这里插入图片描述

bash不会直接执行命令,它会创建一个子进程,让子进程去执行。 这个子进程会帮用户进行命令行解释。 而真正的bash只需要等待就行。

总结: 对于大部分操作系统,在它的软件外层还有一个外壳层。这个外壳层通常进行命令行解释。 在用户和操作系统之间加一层软件层,主要将命令翻译给核心,同时将对应的操作系统执行结果翻译给用户。 其中这个外壳程序就叫做shell外壳,常见的外壳有图形化界面和命令行。

shell和bash有什么区别呢? 也就是说shell是所有外壳程序的统称,bash是具体的一款外壳程序。 命令行解释器在不同的操作系统中,有不同的种类,像sh。

3. 权限介绍

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

  1. 超级用户:可以再linux系统下做任何事情,不受限制,命令提示符是“#”。
  2. 普通用户:在linux下做有限的事情,普通用户的命令提示符是“$”。

3.1 什么是权限

权限就是通过一定的条件来拦住一部分人,给一部分人权利,来访问某种资源。

就和门禁和vip的道理相同。 权限的有无,就是能或者不能的问题。

3.2 权限的本质

  1. 权限和人有关,就像在视频网站上有的视频只能是vip才能看。
  2. 权限也与事物的属性有关,就像不能在视频网站什么刷题是一样的,它没有这个属性。

也就是说:权限=人+事物的属性有关

这个“人”,并不是指的具体某一个人,而是一种角色。 就像是在学校的校门的门禁一样,并不是说你叫张三就能进入学校,而是说,你是这个学校的学生,是这个角色,才能进学校。

3.3 Linux中的用户

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

在这里插入图片描述

我们大部分用的就是root。

在Linux中root是超级管理员,所以它不受权限约束。

那么普通用户怎么将自己变成超级用户呢? 我们先使用普通账号

在这里插入图片描述

将普通用户变成root,直接su,这里提示要输入密码

在这里插入图片描述

那么这里输入哪个的密码? 我们登录的是root当然就是输入root的密码。 所有建议普通用户和root的密码不要设置成一样的。

在这里插入图片描述

此时就变成了root。

在这里插入图片描述

那么怎么退回普通用户呢? 直接ctrl+D

在这里插入图片描述

就变成普通用户。

在这里插入图片描述

普通用户变成超级用户还有一种方式就是su -

在这里插入图片描述

此时输入的还是root的密码,但是多了一条提示信息。

susu -的区别是什么? su是就是直接将当前角色的身份变成root。 su -是相当于是让root重新做登录了。 此时路径会发生变化,直接到root的家目录下面了。

在这里插入图片描述

但是如果我们单纯的用su,所处的路径不会发生变化。

在这里插入图片描述

如果要将普通用户切换为root,建议直接su就行。

在这里插入图片描述

如果超级管理员想变成普通用户怎么办呢?

在这里插入图片描述

如果想变成指定的用户,直接su+指定用户就行。

在这里插入图片描述

退出直接ctrl+D就行了。

在这里插入图片描述

如果不想直接变成root,但想以root的身份执行一个工作该怎么做? 在创建的文件前面加sudo

在这里插入图片描述

这里输入的是普通用户自己的密码。 这种操作叫做指令提权。

那为什么sudo对指令进行提权的时候,输入的是普通用户自己的密码?

在这里插入图片描述

一般普通用户是没有权限去执行这个的,会报错。在云服务器上默认是不行的。

默认普通用户目前是无法执行sudo,在之后的学习vim,再来解决这个问题。

所以目前我们想以root的身份执行一个工作时,直接变成root就行。

3.4 Linux中文件的权限

在这里插入图片描述

在Linux中有三种“人”: 拥有者 所属组 other

在这里插入图片描述

但是我们看不见other啊? 在Linux下是有组的概念的,一般情况下自己就是一组。 other是匹配完拥有者和所属组后,剩下的不匹配的都是other了。

为什么会有所属组的概念? 举个例子;在一家公司里可能会有两组人做同时一个项目,如果这两组都在同一个服务器上做。当某一天,如果领导需要看第一组的源代码时,当放开的时候,另外一组可能会看到第一组的源代码。所以在Linux系统中就得有所属组。 当第一组组内在所属组内放开权限时候,另外一组也看不到。 所属组就是为了在多人协作的时候,更好的进行权限管理。

在这里插入图片描述

Linux中具体的角色是需要具体的人来扮演的。

在这里插入图片描述

我们会发现前边有10个字符,第一列的第一个字符,就表示文件的类型。-:表示普通文件;d:表示目录文件。

文件

剩下的9个字,33为一组,分别对应拥有者,所属组,other。

在这里插入图片描述

所以说: 权限=用户角色(具体的人)+文件权限属性

对于这三个字符,所对应的位置是固定的。 没有就用-,有就对应相关那个字符。

在这里插入图片描述

如果有错误请指出,大家一起进步!