Linux中shell外壳,用户权限,文件权限

Linux 权限

  • 1.shell外壳
    • 1.1 shell外壳的定义
    • 1.2 shell外壳的作用
    • 1.3 shell的原理
  • 2.Linux用户权限
    • 2.1创建普通用户
    • 2.2 用户之间的切换
    • 2.3 sudo指令
  • 3.Linux文件权限
    • 3.1文件访问者的分类(人)
    • 3.2 文件文件类型和访问权限(事物属性)
    • 3.3 chmod指令
    • 3.4三位8进制数字更改权限
    • 3.5 权限匹配问题
    • 3.6 chown 和 chgrp指令

在这里插入图片描述

所属专栏: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)都会给当前登陆用户新启动一个shell,bash。

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
root(root可以省略),此时系统会提示输入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。他们的权限一次是r,w,x。如果没有权限的话就是用“-”表示。

在这里插入图片描述

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用户无视权限直接执行:

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大语言模型(LLM)综述(一):大语言模型介绍

A Survey of Large Language Models 前言1. INTRODUCTION2. OVERVIEW2.1 大语言模型的背景2.2 GPT系列模型的技术演变 前言 随着人工智能和机器学习领域的迅速发展,语言模型已经从简单的词袋模型(Bag-of-Words)和N-gram模型演变为更为复杂和…

【模型推理优化学习笔记】张量并行和流水线并行简介

张量并行 当每个张量被分成多个块时,就会发生张量并行性,并且张量的每个块都可以放置在单独的 GPU 上。在计算过程中,每个块在不同的 GPU 上单独并行处理,并且可以通过组合来自多个 GPU 的结果来计算结果(最终张量&am…

postman发送soap报文示例

一、SOAP和WSDL SOAP是一种基于XML的协议 WSDL(网络服务描述语言,Web Services Description Language)是一门基于 XML 的语言,用于描述 Web Services 以及如何对它们进行访问 二、postman发送soap请求 1、发送post请求&#x…

【计算机网络笔记】OSI参考模型中端-端层(传输层、会话层、表示层、应用层)功能介绍

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

tuxera ntfs2024破解版mac电脑磁盘读写软件

大家都知道由于操作系统的原因,在苹果电脑上不能够读写NTFS磁盘,但是,今天小编带来的这款tuxera ntfs 2024 mac版,完美的解决了这个问题。这是一款在macOS平台上使用的磁盘读写软件,能够实现苹果Mac OS X系统读写Micro…

【2023_10_21_计算机热点知识分享】:机器学习中的神经网络

今天的分享主题是机器学习中的神经网络。神经网络是一种模拟人类神经系统的计算模型,它由一系列的神经元组成,每个神经元接收一组输入,经过计算后产生一个输出。神经网络的学习过程是通过调整神经元之间的连接权重来实现的,这个过…

【2023年11月第四版教材】软考高项极限冲刺篇笔记(1)

1 你要接受一些观点 1、不明白的不要去试图理解了,死记硬背 2、要快速过知识点,卡住是不行的,慢也是没有任何作用的。 3、将厚厚的知识,变为薄薄的重点。标红必背 4、成熟度等级,很多知识领域都有,就是评价在一个领域达到的级别。 5、记得搜一下当年的高频科技词汇 6、选…

模拟退火算法(SA)求解旅行商问题(TSP)python

目录 一、模拟退火算法求解TSP(city14)的python代码 二、city14的运行结果 三、 模拟退火算法求解TSP(city30)的python代码 四、city30的运行结果 一、模拟退火算法求解TSP(city14)的python代码 impor…

网络协议--Ping程序

7.1 引言 “ping”这个名字源于声纳定位操作。Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答(图6-3列出了所有的ICMP报文类型)。 一般来说&#x…

数据科学中常用的应用统计知识

随着大数据算法技术发展,数据算法越来越倾向机器学习和深度学习相关的算法技术,概率论和应用统计 等传统的技术貌似用的并不是很多了,但实则不然,在数据科学工作,还是会经常需要应用统计概率相关知识解决一些数据问题&…

如何在不恢复出厂设置的情况下解锁 Android 手机密码?

如何在不恢复出厂设置的情况下解锁 Android 手机密码? 当您忘记 Android 手机的密码时,可能会有压力,尤其是当您不想恢复出厂设置并删除所有数据时。但是,有一些方法可以在不诉诸如此激烈的步骤的情况下解锁手机。我们将在这篇文…

Elasticsearch 8.9 Master节点处理请求源码

大家看可以看ElasticSearch源码:Rest请求与Master节点处理流程(1) 这个图非常好,下午的讲解代码在各个类和方法之间流转,都体现这个图上 一、Master节点处理请求的逻辑1、节点(数据节点)要和主节点进行通讯&#xff0…

使用WPF模仿Windows记事本界面

本次仅模仿Windows记事本的模样&#xff0c;并未实现其功能。 所有代码如下&#xff1a; <Window x:Class"控件的基础使用.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/…

CentOS7安装MySQL8.0.28

CentOS7安装MySQL8.0.28 一、下载MySQL安装包二、安装配置mysql 一、下载MySQL安装包 点击以下链接可以自动跳转&#xff1a;MySQL官网 接下来按如图所示依次点击进入。 选择自己所需要版本 此处如需下载历史版本可以点击 二、安装配置mysql 1、登录ssh或其他相关软件上…

CSS中 通过自定义属性(变量)动态修改元素样式(以 el-input 为例)

传送门&#xff1a;CSS中 自定义属性&#xff08;变量&#xff09;详解 1. 需求及解决方案 需求&#xff1a;通常我们动态修改 div 元素的样式&#xff0c;使用 :style 和 :class 即可&#xff1b;但想要动态修改 如&#xff1a;Element-ui 中输入框&#xff08;input&#x…

method.isAnnotationPresent(Xxx.class)一直为null

​​​​package com.dj.springtest.aspect;import com.dj.springtest.annotation.RequireRoles; import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.s…

使用CMS后台资源,如何在小程序上不开调试模式能正常呈现出内容

配置合法域名 如何配置合法域名&#xff1a; 1.找到自己的合法域名&#xff1a;在微信开发者工具中“不勾选"不校验合法域名&#xff0c;就会看到报错说你的某个链接不是合法域名&#xff0c;那不就说明我们需要将这个链接设置为合法域名嘛。这就找到了我们的需要设置的…

《深入理解java虚拟机 第三版》学习笔记二

第 4 章 虚拟机性能监控、故障处理工具 4.2 基础故障处理工具 4.2.1 jps&#xff1a;虚拟机进程状况工具 可以列出正在运行的虚拟机进程&#xff0c;并显示虚拟机执行主类&#xff08;Main Class&#xff0c;main()函数所在的类&#xff09;名称以及这些进程的本地虚拟机唯一…

使用Gitlab构建简单流水线CI/CD

什么是Gitlab Gitlab实质上是一套DevOps工具 目前看起来&#xff0c;Gitlab属于是内嵌了一套CI/CD的框架&#xff0c;并且可以提供软件开发中的版本管理、项目管理等等其他功能。 这里需要辨别一下Gitlab和Github Gitee的区别。 GIthub大家都很熟悉了&#xff0c;一般大家都会…

【k8s】1、基础概念和架构及组件

一、kubernetes概述 K8S是一种开源的容器编排平台&#xff0c;用于自动化部署、扩展和管理容器化的应用程序&#xff0c;它提供了一种容器编排和管理的方式&#xff0c;可以帮助开发人员更轻松的管理容器化的应用程序&#xff0c;并且提供了一种跨多个主机的自动化部署和管理机…