【Hello Linux】 Linux的权限以及Shell原理

news2024/9/29 1:25:59

作者:@小萌新
专栏:@Linux
作者简介:大二学生 希望能和大家一起进步!
本篇博客简介:介绍Linux的基础命令

Linux的权限以及Shell原理

  • Shell的运行原理
  • 权限
    • Linux中权限的概念
    • 如何切换用户
    • 如何提升当前操作的权限
    • 如何添加信任关系
  • 权限管理
    • 文件访问者的分类 (人)
    • 文件类型和访问权限 (事务)
    • 文件权限值的表示方法
    • 文件访问权限的修改
      • 如何修改文件的权限
      • 修改文件权限的两种格式
      • 如何修改文件的拥有者
      • 如何修改文件的所属组
      • 如何修改文件的掩码
    • 目录的权限
    • 粘滞位

Shell的运行原理

Linux 从广义上来理解它是一个操作系统 而从狭义上来理解它则是一个核心 (kernel)

针对Linux这个核心 程序员或商业公司们制作出各种不从的发行版本 比如说 centos retcap ubuntu kail等等

所以说我们用户在操作的时候并不是直接操作Linux kernel 而是通过kernel的外壳程序来和kernel沟通

在这里插入图片描述

shell是什么?

shell的中文翻译是外壳 我们一般认为它是一个命令解释器 用来连接用户和 linux kernel

为什么要设置一个shell外壳而不让用户直接来和 linux kernel沟通呢?

我们下面使用一个小故事来帮助理解一下

你(用户)是一个害羞的程序员 那shell就像媒婆 linux kernel就是让你心动的妹妹 假设她的名字叫小花 你不好意思开口向人家表白 那你就让你家人找媒婆帮你提亲 所有的事情你都直接跟媒婆沟通 由媒婆转达你的意思给小花

那么我们为什么要设置一个shell外壳的原因就很明显了

因为用户不擅长直接和 linux kernel进行沟通

同样的对于小花来说 她根本不清楚你是一个什么样的人 有了媒婆的信任背书 能够保护她的安全

所以说我们这里总结下设置shell的两点原因

  • 因为用户不擅长直接和 linux kernel 沟通 所以设置shell方便用户操作
  • 保护 linux kernel

shell的原理是什么

shell的原理部分涉及进程相关知识 在我们学习到相关内容后会再做解释

此外shell是对于所有外壳程序的统称 在centos中这个外壳程序是 bash

shell和bash之间的关系就像是程序员和你之间的关系 它是对于一个抽象概念的实例化

权限

Linux中权限的概念

Linux系统中有两种用户 它们分别是超级用户(以下简称root)和普通用户

  • root的权限非常高 几乎可以在linux系统下做任何事情
  • 普通用户可以在linux系统下做有限的事情

我们可以用命令提示符来区分这两个用户

root的命令提示符是 ‘#’
在这里插入图片描述
普通用户的命令提示符是 ‘$’
在这里插入图片描述

如何切换用户

切换用户的情况分两种

  • 从root切换为普通用户
  • 从普通用户切换为另外的用户(包括root)

root用户切换为普通用户只需要 su + 用户名就好了

在这里插入图片描述

普通用户切换为其他用户需要输入其他用户的密码

在这里插入图片描述

如何提升当前操作的权限

我们可以使用sudo命令来提升当前操作的权限 即使用root权限来执行当前操作

在这里插入图片描述
在通常情况下普通用户是没有权限去修改其他用户的密码的

但是我们这里使用了sudo命令 即这条命令是用root权限去操作的

敲完这行命令之后系统提示要我们敲出自己的密码

在这里插入图片描述
但是敲完之后我们发现 我们并没有被添加至信任名单当中 也就无法执行sudo操作

这个信任名单系统显然是合理的 因为如果我们不设置它 人人都能使用sudo操作 那么系统就要乱套了

那么我们应该如何添加这个信任关系呢?

如何添加信任关系

首先我们需要将我们的用户切换至超级用户 因为只有超级用户才具有这个权限

接着我们需要敲出下面的指令

  vim /etc/sudoers

打开文档之后我们跳到100行左右的位置

在这里插入图片描述
接下来我们只要按照第一行的格式 将需要添加信任关系的用户名添加进去就好了

权限管理

文件访问者的分类 (人)

权限可以将用户分为三大类

  • 文件和文件目录的所有者 : u - user
  • 文件和文件目录的所有者所在的组的用户 : g - group
  • 其他人 o - others

文件的访问者分类和我们上面提到的两种用户有什么分别嘛?

实际上文件的访问者是一种身份 而我们说的用户一般特指一个人

拿现实生活来比较 一个人可以是爸爸身份 可以是老师身份 也可以是学生身份

对应到这里 用户可能是文件的所有者 所属组 或者是others

为什么要设置文件的所属组

在某些大厂内部 针对同一个业务 可能有两个不同的工作室做出不同的产品来竞争这条业务线

而这两个工作室可能共用一个linux服务器

当组长创建了一个文件的时候 他可能有这样子的一个需求

想要自己和组内的人员能够看到这份文件 但是对于其他人来说不可见

很显然如果没有所属组这一概念的话 我们就无法完成这一需求了

有什么办法来区分others呢?

既不是所属组又不是所有者就是others

文件类型和访问权限 (事务)

我们离开文件单纯讨论人的权限并没有意义

文件的权限有三种

  • 是否可读
  • 是否可写
  • 是否可执行

映射到三种不同身份上就有九种组合

那么我们怎么能看到这九种组合呢?

我们敲出ll指令 可以发现最前面有一串字符 这一串字符就代表着文件的类型和属性
在这里插入图片描述
这一串字符由十个字符组成 我们可以将这十个字符分为两部分

其中第一个字符为一部分 后面九个字符为一部分

在这里插入图片描述
如上图所示 第一个字符标识文件类型 剩下九个字符标识三种身份的三种权限是否存在

第一个字符代表文件类型 大致有以下几种 其中最前面两种尤其重要 需要记住

  • -:代表普通文件
  • d:代表目录
  • l:代表链接文件(类似于Windows当中的快捷方式)
  • b:代表块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件
  • s:套接口文件

而剩下的九个字符 三个为一组 分别代表该文件相对于其拥有者 所属组以及other是否拥有某种属性

其中各个字符的解释如下

  • r 代表读权限
  • w 代表写权限
  • x 代表执行权限
  • -符号 代表没有该权限

注意 这里的rwx顺序不能乱!!

在这里插入图片描述

还是以上面的图为例来分析

首先这是一个普通文件

他的所有者具有读写执行权限

他的所属组具有读写执行权限

其他人具有读和执行权限 并没有写权限

文件权限值的表示方法

文件权限的表示方法一共有两种 我们下面使用两张表来表示

字符表示法

字符表示法说明
r - -仅可读
- w -仅可写
- - x仅可执行
r w -可读可写
r - x可读可执行
- w x可写可执行
r w x可读可写可执行
- - -无权限

八进制数值表示法

字符表示二进制八进制说明
r - -1004仅可读
- w -0102仅可写
- - x0011仅可执行
r w -1106可读可写
r - x1015可读可执行
- w x0113可写可执行
r w x1117可读可写可执行
- - -0000无权限

文件访问权限的修改

如何修改文件的权限

我们一般在linux中使用下面的语法格式来修改文件的权限

chmod 选项 权限 文件名或目录名

这里要注意的是 只有root用户才有修改文件权限的权力 如果普通用户想要做这种操作需要使用sudo命令

修改文件权限的两种格式

格式一: 用户符号 +/-/= 权限字符

用户符号如下

  • u – 拥有者
  • g – 所属组
  • o – 其他人
  • a – 所有人

权限字符就是我们说的 rwx

下面是具体的操作示例

在这里插入图片描述

格式二 : 使用三位八进制数字

每一位八进制数字可以表示一个身份的三种权限

比如说 7的二进制是 111 即可以表示三种权限都存在的状态 rwx
6的二进制是110 则可以表示rw-

下面是具体的操作示例

在这里插入图片描述

如何修改文件的拥有者

我们一般在linux中使用下面的语法格式来修改文件的拥有者

chown 选项 用户名 文件名或目录名

这里要注意的是 只有root用户才有修改文件权限的权力 如果普通用户想要做这种操作需要使用sudo命令

而如果想要递归修改所有文件的拥有者则需要使用 -R选项

下面是使用示例

在这里插入图片描述

如何修改文件的所属组

我们一般在linux中使用下面的语法格式来修改文件的所属组

chgrp 选项 用户名 文件名或目录名

在这里插入图片描述

这里还有一种比较特殊的修改方式

就是当我们使用chown的时候 可以使用分号的方式指定两个用户 分别修改文件的拥有者和所属组
在这里插入图片描述

如何修改文件的掩码

我们查看新建的文件和目录 它们都有自己默认的权限

其中新建文件的默认权限是 0666

新建目录的默认权限是 0777

第一位的0我们直接忽略 后面三位实际上就对应着三种身份的rwx权限

但是我们实际上创建文件或者目录的时候缺发现这不符合我们的理论

在这里插入图片描述
我们发现我们创建的目录 others并没有写权限

那么这是为什么呢?

实际上这是因为权限掩码的存在

我们假设默认权限是mask 掩码是umask 那么最后的文件的权限是 mask & (~umask)

我们可以通过umask指令来查看文件的默认掩码

在这里插入图片描述

在这里插入图片描述

我们可以发现刚好符合我们新创建的文件的权限 这也验证了我们的理论

与此同时我们可以设置权限掩码

在这里插入图片描述
在这里插入图片描述

其中超级用的默认掩码是0022 普通用户的默认掩码是0002

目录的权限

对于目录来说它的可读可写可执行权限分别对应下面的内容

  • 可读权限: 如果用户没有该目录的可读权限 则无法通过ls指令查看目录中的文件内容
  • 可写权限: 如果用户没有该目录的可写权限 则无法通过一系列指令在目录中创建文件或删除文件
  • 可执行权限: 如果用户没有该目录的可执行权限 则无法通过cd指令进入到目录当中

但是这里就会有一个问题

只要用户有当前目录的可写权限 那么它就可以删除目录内的所有文件 哪怕它没有文件的可写权限

在这里插入图片描述

这显然是很不合理了

于是linux中引入了一个叫做粘滞位的概念

粘滞位

它的语法格式如下

chmod +t 目录名

当一个目录被加上粘滞位之后 就算我们拥有这个目录的可写权限也无法删除了

在这里插入图片描述
在这里插入图片描述

这里我们可以发现虽然other用户具有w权限 但是无法删除目录里面的文件了

当一个目录被设置为粘滞位只有三种情况能够被删除

  • 超级用户删除
  • 该目录的拥有者删除
  • 该文件的拥有者删除

这里最后还有一点值得注意的是

粘滞位只会影响删除 其他用户如果拥有w权限 仍然可以在该目录下创建文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/339375.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++:STL之栈和队列 | 模拟实现 | 优先级队列 】

目录 1. stack的介绍和使用 1.1 stack的介绍 1.2 stack的使用 2 栈的模拟实现 3 queue的介绍和使用 3.1 queue的介绍 3.2 queue的使用 4 queue的模拟实现 5 deque的介绍 5.1deque的原理介绍 5.2 deque的缺陷 5.3 为什么选择deque作为stack和queue的底层默认容器 6 p…

nodejs+vue+elementui在线求助系统vscode

目 录 摘 要 1 前 言 3 第1章 概述 4 1.1 研究背景 4 1.2 研究目的 4 1.3 研究内容 4 第二章 开发技术介绍 5 前端技术:nodejsvueelementui,视图层其实质就是vue页面,通过编写vue页面从而展示在浏览器中,编写完成的vue页面要能够和控制器类进…

加载sklearn covtype数据集出错 fetch_covtype() HTTPError: HTTP Error 403: Forbidden解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理…

微搭低代码从入门到精通07-基础布局组件

低码开发不同于传统开发,传统开发我们通常需要编写前端代码和后端代码。前端代码由HTML、CSS和JavaScript组成,后端代码我们通常要用后端语言比如Java来编写接口。 低码开发的特点是可视化开发,在编辑器中通过组件的拖拽来完成页面的编制。如…

莽村李青都看得懂的Vue响应式原理

Vue响应式原理八股文序违背老祖宗的决定将Vue响应式原理公众于世响应式数据(Observe篇)dom更新(Wacther篇)依赖收集八股文序 开篇来一段大家都会背诵的八股文。 某面试官: 请你简要介绍一下Vue的响应式原理。 答&am…

leaflet 读取上传的wkt文件,转换为geojson文件(示例代码056)

第056个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中上传WKT文件,解析wtk文件并转换为geojson,并在地图上显示图片。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式本示例所用的a.wkt示例源代码(共139行)…

AirServer在哪下载?如何免费使用教程

苹果手机投屏到电脑mac是怎么弄?你知道多少?相信大家对苹果手机投屏到电脑mac能在电脑上操作不是很了解,下面就让coco玛奇朵带大家一起了解一下教程。AIrServer是一款ios投屏到mac的专用软件,可将iOS上的音频,视频&…

make的使用及Makefile万能模板

make的使用及Makefile万能模板前言为什么用makemake的使用Makefile万能模板前言 gcc 的编译,是将源码生成可执行程序。 例如: gcc hello.c -o hello源码到可执行程序需要四步处理 硬件——》机器语言——》汇编语言——》 高级语言 1)预处理…

【openGauss实战8】Schema的图文解读

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

Session与Cookie的区别(三)

中场休息 让我们先从比喻回到网络世界里,HTTP 是无状态的,所以每一个 Request 都是不相关的,就像是对小明来说每一位客人都是新的客人一样,他根本不知道谁是谁。 既然你没办法把他们关联,就代表状态这件事情也不存在。…

微搭低代码从入门到精通08-轮播容器

我们上一篇讲解了基础布局组件,讲解了普通容器和文本组件的用法,本篇我们继续介绍布局组件。 小程序中经常会有个功能是轮播图展示的功能,多张图片可以顺序进行切换。我们学习使用轮播容器的时候,先考虑切换的图片从哪来&#xf…

视频连载09 - 这个为生信学习和生信作图打造的开源R教程真香!!!

点击阅读原文跳转完整教案。1 思考题2 R基础2.1 R安装2.2 Rstudio基础2.2.1 Rstudio版本2.2.2 Rstudio安装2.2.3 Rstudio 使用2.3 R基本语法2.3.1 获取帮助文档,查看命令或函数的使用方法、事例或适用范围2.3.2 R中的变量及其初始化2.3.3 变量类型和转换2.3.4 R中矩…

Python-项目实战--贪吃蛇小游戏(1)

1.贪吃蛇游戏规则贪吃蛇游戏规则如下:1.1开始和结束贪吃蛇初始出现在游戏窗口的左上角位置,体长共有3节游戏过程中,一旦蛇头撞到了窗口的边缘或者身体的其他部位,游戏结束游戏过程中,点击游戏窗口的关闭按钮,或者按下ESC键可以直接退出游戏一…

Java高级-常用类-String、Date、Compare、Other

本篇讲解java常用类 String类 String:字符串,使用一对""引起来表示。 String类被声明为final的,不可被继承。 String实现了Serializable接口:表示字符串是支持序列化的。 ​ 实现了Comparable接口:表示String可以比较…

微搭低代码从入门到精通09-数据容器

我们已经用了两篇的篇幅介绍了微搭的布局组件,包括普通容器、文本、图片、轮播容器。 微搭中还有粗粒度的组件,今天介绍的数据容器就是粗粒度的组件。所谓粗粒度的组件,一般包括基础组件、样式还有默认的事件。数据容器一共包含三种分别是数…

vscode sftp从linux服务器下载文件至本地:No such file or dictionary【已解决】

在服务器跑完程序需要下载数据的时候报错: [warn] ENOENT: no such file or directory, open /home/LIST_2080Ti/.ssh/config load /home/LIST_2080Ti/.ssh/config failed 完整报错内容如下: [02-10 08:38:47] [info] config at /home/LIST_2080Ti {&q…

Arm-Linux子系统的互相Notify

前言: Linux下面不同的子系统一个个的组成了整个系统的运行环节,为了让这些子系统能够互相通讯,有一种叫做:notify chain(通知链)的东西。本篇看下。 概括 所谓通知链,有通知,就有执行的地方。比如A子系统通…

无题

(1)风国产化替代?全球化?新一代数字化技术升级?云化(公有云化)?业务线上化?产业互联整合?私有云原生技术可以支撑:国产化替代-新一代数字化技术升…

WPS底层逻辑串讲

文章目录wps页面基本介绍演示文稿功能讲解框架介绍具体功能讲解:1. 另存为2. 输出图片3. 文件打包4. 演示文稿打印5. 文档加密两种方式 ❤文件打开密码 :文档加密--->密码加密--》输入密码即可 ❤文档编辑密码:输出为PDF--->设置即可6.…

【老卫拆书】009期:Vue+Node肩挑全栈!《Node.js+Express+MongoDB+Vue.js全栈开发实战》开箱

今天刚拿到一本新书,叫做《Node.jsExpressMongoDBVue.js全栈开发实战》,做个开箱。 外观 先从外观上讲,这本是全新的未开封的,膜还在。 这本书介绍从技术原理到整合开发实战,以丰富的项目展现全栈开发的一个技巧。 …