Linux学习:权限

目录

  • 1. shell命令的工作原理与存在意义
    • 1.1 shell命令解释器存在的意义
    • 1.2 shell解释器的工作原理
  • 2. Linux操作系统:用户
    • 2.1 什么是用户
    • 2.2 用户的切换操作
    • 2.3 用户权限划分的意义
  • 3. Linux中权限的种类和意义
    • 3.1 什么是权限
    • 3.2 sudo指令与短暂提权
  • 4. 文件类型与文件权限
    • 4.1 文件的权限
    • 4.2 文件权限的更改指令
    • 4.3 文件的类型
  • 5. 目录权限,公共目录与粘滞键
    • 5.1 目录文件权限的意义
    • 5.2 权限掩码
    • 5.3 文件共享,公共目录与粘滞键

1. shell命令的工作原理与存在意义

  1. shell(译:外壳)命令行解释器,所有的命令行解释器(诸如,bash等)都可以被称作shell
  2. 我们平时所理解操作系统(广义上)都是由两部分组成,即内核(kernel)+ 外壳(shell),而真正的作为操作系统发挥着职能的实则是内核,shell只是充当了中间一个传递与解释的角色,那么为什么我们不去更高效的直接去对内核进行操作,要通过shell来执行呢?

在这里插入图片描述

1.1 shell命令解释器存在的意义

  1. 操作系统的内核有着大量的文件,数据,这些资源时操作系统的核心,正是它们组成了操作系统使得操作系统正常运行,发挥职能。
  2. 正因为它们的关键作用,一但出错操作系统就会瘫痪,内核中的资源庞大且复杂,如果我们去直接操作内核不但需要极强的专业素养花费大量的精力,同时因为内核的完全暴露,也意味着安全无法得到保障,所以我们直接去操作内核是及其吃力不讨好的事情。
  3. 由此出现了用户与操作系统讷河之间的沟通保障与桥梁shell(命令行解释器)

在这里插入图片描述

1.2 shell解释器的工作原理

  1. shell解释器本质上是一个从我们登录操作系统到离开期间一直运行的程序,它以控制台的形式命令行的方式为我们提供服务。
  2. 为了持续稳定的为我们提供服务,shell在执行大部分操作时都会额外开辟一个个子进程(进程:正在执行的程序)来代替自己执行,只有极少部分无风险操作它才可能亲自己执行。这样即便发生错误也不会影响服务的提供,使得shell挂掉。

2. Linux操作系统:用户

2.1 什么是用户

  1. 在使用操作系统时,我们是以用户的身份登录的,不同的用户有在操作系统享有不同的权限和资源,以此为标准用户可以分为两类:
    <1> root(超级用户,管理员)
    <2> 普通用户

2.2 用户的切换操作

  1. 每当我们登录操作系统时,都需要密码,不同的密码登录也代表着不同的用户身份。在我们登录后我们的身份不是无法更改的,我们可以通过指令与配套身份用户的密码来实现的身份的切换。

指令:su
1.指令意义:将身份切换为管理员

指令: su -
2. 指令意义:以管理员的身份再登录一次

指令:su [用户名]
3. 指令意义:将身份切换为其他普通用户

指令:su -[用户名]
4. 指令意义:以其他普通用户的身份再登录一次

5.补充:用户身份间的切换细节受到当前身份权限的影响,具体如下:

在这里插入图片描述

2.3 用户权限划分的意义

  1. 互联网公司的开发部门都是通过一个个服务器来实现项目小组内成员的合作,来高效的进行项目开发
  2. 用户权限的分配,会根据开发人员各自职责,能力划分,使得每个只能在自己所拥有的权限内施为,提高了效率,也极大的提高了项目的安全性健壮性。
    除此之外,当开发人员想要做出一些权限外的想法尝试,不会因为一时冲动而导致错误,必须要与管理员与同组人员进行交流探究可行性。(权限划分:保险)

3. Linux中权限的种类和意义

3.1 什么是权限

  1. 权限不能凭空而存在,必须依托于已有的事物与其功能,当我们凭借权限做出某个操作时,提及权限的前提便是这个操作,动作已经存在,而权限是划分能或者不能的指标
  2. 当某个事物有着某些功能时,也往往表示着它会有哪些权限,文本文件是存储信息的文件,它可以进行信息的读,写,查看这也就意味着它存在着读,写,看的权限。
  3. 在Linux系统中,是否拥有权限既要看权限对应的功能是否存在,也要看当前用户是否有权限去做。

3.2 sudo指令与短暂提权

  1. 当因为开发需要与获得许可后,在操作系统中我们以自己普通用户身份进行项目开发与操作需要一些额外权限时,直接向管理员索要超级用户的登录密码,切换超级用户后再进行操作的方式是非常不便的,同时可能会给操作系统带来安全隐患。
  1. 通过sudo指令短暂提权就可以很好的解决上述问题,sudo指令短暂提权的操作也是需要被赋予权限的,具体为向操作系统的sudoers配置文件(白名单)中添加需要此权限的用户。
  1. 指令sudo + 执行指令
    <1> 指令意义:以超级用户的权限执行此条指令
    <2> 执行此指令需要当前普通用户的登录密码
    <3> 在输入过一次密码之后,短时间内不用再次输入
  1. 补充:
    <1> 超级用户向操作系统中添加超级用户:
    指令:adduser [新用户]
    <2> 给新用户配置登录密码(不可缺省):
    指令:passwd [新用户]
    <3> 删除操作系统中用户:
    指令:userdel -r [用户]

4. 文件类型与文件权限

4.1 文件的权限

  1. 文件的有着可以被读,写,执行的功能,对应的也有着对使用者的权限限制分类。我们在前面的学习中知道,操作系统中存在着不同权限等级的用户,对于普通用户文件将其划分为三类:
    <1> 文件的创建者,拥有者
    <2> 与文件拥有者一个所属组的用户
    <3> 其他用户
  2. 超级用户虽然属于文件识别中的其他用户,但不受文件权限划分的影响
  3. 查看文件信息时,各类用户的权限详情:(指令ll
  1. 文件的信息内容:

在这里插入图片描述

4.2 文件权限的更改指令

如何查看文件的权限信息:

  1. 文件的权限并不是一成不变的,而是可以被文件拥有者通过指令更改调整的。
  2. 文件的权限共有三种(读,写,可执行),文件的权限信息位由三位组成,再对应三种相对于文件的用户身份,文件的权限位一共九位。
  3. 文件信息中可以浏览文件当前有没有相对应的权限,权限位的排列顺序为读,写,可执行。其中,r代表读权限,w代表写,修改的权限,x代表可执行的权限,当相对应权限没有时,其权限位位字符-

如何更改文件权限:

  1. 指令:chmod [用户代表字符] +/- [相对应权限代表字符] [文件]
    <1> 拥有者:u(user),所属组:g(group),其他:o(other),所有人:a(all)
    <2> 读:r,写:w,可执行:x(可复合使用:+/- rwx)
  2. chmod指令的8进制指令参数:
    <1> 将用户字符与权限字符,替换为 0~7
    <2> 二进制位上1代表有权限,0代表没有此权限,一个8进制数代表一种用户的权限
    示例:chmod 777(为所有人添加所有权限)

文件可执行的条件:

  1. 当前用户有文件的可执行权限,当前用户是可执行程序。

文件的权限判断方式:

  1. 文件的拥有者往往同时也属于文件的所属组,当我们将拥有者权限关闭时,拥有者不能再凭借文件所属组的身份获得文件所属组的权限。(文件权限的判断,有固定的顺序逻辑)

更改文件的拥有者与所属组:

  1. <1>指令:chown [新用户] [文件](需要超级用户的权限)
    指令意义:更改文件的拥有者为新用户
    <2> 指令:chown [新用户] : [所属组] [文件](root)
    指令意义:更改文件的拥有者与所属组
    <3> 指令:chgrp [所属组] [文件](root)
    指令意义:更改文件的所属组

4.3 文件的类型

  1. Linux操作系统下一切皆是文件,那么为了描述操作系统中各种各样的资源,为了实现各种各样的功能,就一定会有各种不同类型的文件,以不同的功能,特征,文件被划分许多种。
  2. 那么,Linux下的文件种类有多少,我们接下来进行了解:
    <1> 普通文件-:文本文件,源代码,图片,视频,可执行程序等
    <2> 目录文件d:文件夹
    <3> 字符设备文件c:键盘,显示器
    <4> block块设备文件b:磁盘
    <5> 链接文件l:快捷方式
    <6> 管道文件p:同一操作系统中可以连接不同用户间的文件
    <7> socket文件s
    补充:设别文件目录路径:/dev/vda

Linux下文件类型的判断方式与文件后缀

  1. Windows操作系统中,文件的类型是由文件后缀决定的,而Linux中却不是这样,这样是否意味着我们在为文件命名时,就可以为所有文件不加文件后缀呢?
  2. 事实并给如此,Linux下确实不以文件的后缀确定文件的类型,可是一些建立在操作系统上的其他库,编译器,工具却要以文件后缀的方式分辨文件是否复合类型,加上文件后缀也更便于我们对文件进行分辨,识别,管理
  3. 指令:file [文件]
    指令意义:识别文件的类型

5. 目录权限,公共目录与粘滞键

5.1 目录文件权限的意义

我们知道Linux操作系统下一切皆文件,目录也是一种文件,因为文件有读,写,可执行的权限,而这三种权限在目录文件也有相对应的操作,接下来我们进行这方面的学习。

使用指令ll -d查看目录文件的信息
在这里插入图片描述

  1. 对于目录而言,进入目录需要x可执行权限
  2. r读权限,对应着查看目录中文件的信息,没有此权限无法查看文件信息
  3. w写权限,对应着在目录中创建,删除,修改文件
  4. 目录读写权限与更改目录中文件本身的权限属性不冲突

5.2 权限掩码

  1. 我们创建的普通文件,目录文件在浏览它们的文件信息时,不难发现它们被创建出后并非是如我们所想的所有权限都有的初始状态。这是为何,我们引入权限掩码的概念。
  1. 一个权限被创建出时初始权限由两个因素共同决定,一是此种文件在操作系统中的起始权限,二是可以自定义的权限掩码
    <1> 普通文件的起始权限为,664,即拥有者与所属组都有读写权限,而other只有读权限,这是由普通权限的性质决定的,大部分普通文件都不是可执行程序,所以在起始权限的设置上我们并未附加可执行权限。
    <2> 目录文件的起始权限为,777
  1. 起始权限 与 权限掩码的计算逻辑,为将权限掩码中出现的权限在起始权限中去掉。数学上的计算操作即为,将权限掩码取反再和起始权限做按位与运算~ + &
  1. 查看与更改操作系统权限掩码
    <1> 指令:umask
    指令意义:查看权限掩码
    在这里插入图片描述

<2> 指令:umask [新的权限掩码](不需要超级用户权限)
指令意义:更改权限掩码
在这里插入图片描述

5.3 文件共享,公共目录与粘滞键

  1. Linux操作系统下,普通用户间的项目协作存在着诸多不便,各自创建的文件资源无法妥善处理。
    <1> 当共享文件资源存放在任意一方的家目录中时,就要赋予对方,家目录的一定权限,这对被访问方家目录中的资源造成了信息泄露,安全隐患
    <2> 因为需要共同协作,那么,资源就要集中存放,就不得不给予合作者创建文件在当前目录创建文件的权限,可是创建权限与文件卸载权限捆绑
  1. Linux中存在着一个公共目录,所有人都可以在此目录中创建,存放文件。有了公共目录的存在就解决了,第一个问题以家目录为共享工作目录时存在的安全隐患。可是问题2,依旧存在,即使是公共目录创建权限与文件权限仍然捆绑,任何人都可以删除公共目录中的任何文件。这时,我们引入粘滞键。
  1. 为了解决上述问题2,Linux中加入了粘滞键概念:
    <1> 我们可以通过,指令:chmod +t [文件],使得目录中的其他用户不再有删除己方文件的权限
    <2> 补充:指令touch [文件1][文件2][文件3]…,可以一次创建多个文件。

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

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

相关文章

vant van-field 密码输入框小程序里隐藏、显示密码bug总结

老规矩先上效果图: vant 输入框组件 密码的隐藏与显示功能&#xff1a; 注: 用password属性控制密码的显示与隐藏 不要用type属性&#xff0c;type属性在真机上有时会没有效果 1、当然如果只用typepassword 不需要切换显示、隐藏也可以使用。 2、如果用到了密码的显示与…

Matlab|【EI复现】电动汽车集群并网的分布式鲁棒优化调度模型

目录 1 内容简介 2 关键知识点 2.1 三类电动汽车模型 3 程序结果 4 下载链接 1 内容简介 电动汽车的数据模型种类繁多&#xff0c;但是用到比较高阶数学方法的并不多&#xff0c;本次分享的程序是下图所示的文章。 采用分布鲁棒优化模型&#xff0c;用到鲁棒对等转换&…

构建高效可靠的消息队列系统:设计与实现

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 一、引言 二、设计目标 2.1、高可用性 1. 集群搭建 1.1 …

再探再报 除 0 这件事有不同

首先&#xff0c;在数学中&#xff0c;一个数除以0是没有意义的。 其次&#xff0c;在计算机中&#xff0c;对于除零&#xff0c;传统概念里是会上报一个异常。首先是CPU内部实现会报异常。最早学组成原理和汇编的时候&#xff0c;都是说CPU寄存器中有个表示除零异常的位。在L…

高分辨率全球海洋温度和盐度再分析数据Global Ocean Physics Reanalysis(0.083°),并利用matlab读取绘图

1.引言 在研究全球海平面变化的问题中&#xff0c;卫星测高获得总的海平面变化&#xff0c;而海平面变化包含质量变化和比容变化。因此测高数据和海洋物理分析数据对于海平面研究至关重要。 测高数据下载网址&#xff1a; Global Ocean Gridded L 4 Sea Surface Heights And …

1分钟带你学会使用装饰器编写Python函数

1.需求 向 test() 函数中&#xff0c;新增一个功能&#xff0c;多输出一句话"给他补铁" def test():print("水中放吸铁石") # test()# 第一种方式&#xff1a;重写函数 def test():print("水中放吸铁石")print("给他补铁") test()# …

在Blender中清理由Instant-NGP等几何学习技术生成的网格

使用布尔运算: 创建一个大的立方体或其他简单几何体包裹住全部网格。使用布尔修改器对两个网格进行“差集”运算。这将移除超出包裹体之外的多余网格部分。 手动选择并删除: 进入编辑模式&#xff08;按Tab键&#xff09;。按A键取消选择所有顶点。按B键并拖动以选择您想要删除…

C# CallerMemberName、CallerFilePath、CallerLineNumber

CallerMemberName&#xff1a;调用某个方法的主方法名称 CallerFilePath&#xff1a;调用某个方法的主方法所在的类文件地址 CallerLineNumber&#xff1a;调用这个方法所在的行号 用这三个附加属性&#xff0c;需要设置默认值。

重学SpringBoot3-内容协商机制

重学SpringBoot3-内容协商机制 ContentNegotiationConfigurer接口配置内容协商URL参数Accept头使用Url扩展名 自定义内容协商格式步骤1: 注册自定义媒体类型步骤2: 实现HttpMessageConverter接口步骤3: 使用自定义HttpMessageConverter 注意点 在 Spring Boot 3 中&#xff0c;…

【每日刷题】栈与队列-LC394、LC347、LC215

题外话&#xff1a;感觉脑子没长到栈这块…最近刷栈的题都好难啊…哭哭…坚持坚持&#xff01;多刷几遍就好了&#xff01;&#xff01; 1. LC394.字符串解码 题目链接 先说数据结构。 维护两个栈&#xff1a;一个栈存之前的字符串&#xff0c;另一个栈存之后的字符串的重复…

腾讯云轻量服务器流量用完了怎么办?停机吗?

腾讯云轻量服务器流量用完了怎么办&#xff1f;超额流量另外支付流量费&#xff0c;流量价格为0.8元/GB&#xff0c;会自动扣你的腾讯云余额&#xff0c;如果你的腾讯云账号余额不足&#xff0c;那么你的轻量应用服务器会面临停机&#xff0c;停机后外网无法访问&#xff0c;继…

探索React中的类组件和函数组件

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

类与对象-对象特性

师从黑马程序员 对象的初始化和清理 构造函数和析构函数 用于完成对象的初始化和清理工作 如果我们不提供构造和析构&#xff0c;编译器会提供编译器提供的构造函数和析构函数是空实现 构造函数&#xff1a;主要用于创建对象时为对象的成员属性赋值&#xff0c;构造函数由编…

每日学习笔记:C++ STL 的Vector

Vector定义 Vector的大小与容量 Vector的函数 操作注意事项 Vector当作C数组 vector<bool>

瑞芯微第二代8nm高性能AIOT平台 RK3576 详细介绍

RK3576处理器 RK3576瑞芯微第二代8nm高性能AIOT平台&#xff0c;它集成了独立的6TOPS&#xff08;Tera Operations Per Second&#xff0c;每秒万亿次操作&#xff09;NPU&#xff08;神经网络处理单元&#xff09;&#xff0c;用于处理人工智能相关的任务。此外&#xff0c;R…

【C语言】深入理解指针(进阶篇)

一、数组名的理解 数组名就是地址&#xff0c;而且是数组首元素的地址。 任务&#xff1a;运行以下代码&#xff0c;看数组名是否是地址。 #include <stdio.h> int main() {int arr[] { 1,2,3,4,5,6,7,8,9,0 };printf("&arr[0] %p\n", &arr[0]);pri…

数据结构——算法的空间复杂度

【本节内容】 1.空间复杂度 2.常见空间复杂度 1.空间复杂度 空间复杂度也是一个数学表达式&#xff0c;是对一个算法在运行过程中临时占用额外存储空间大小的量度。 空间复杂度不是程序占用了多少bytes的空间&#xff0c;因为这个也没太大意义&#xff0c;所以空间复杂度算…

动态规划课堂4-----子数组系列

目录 引入&#xff1a; 例题1&#xff1a;最大子数组和 例题2&#xff1a;环形子数组的最大和 例题3&#xff1a;乘积最大子数组 例题4&#xff1a;乘积为正数的最长子数组 总结&#xff1a; 结语&#xff1a; 引入&#xff1a; 在动态规划&#xff08;DP&#xff09;子…

java中移位<< >> <<< |数据类型转换

移位 x64转换二进制&#xff1a;100 0000 左移2位 &#xff1a; 1000 0000 0 对应十进制 i 256 >>右移 <<左移 >>无符号位右移 关于右移一位相当于整除2 数据类型及其转换 基本数据类型&#xff0c;数据类型范围 byte(-128~127)&#xff08;-2^7~2…

【开源】SpringBoot框架开发教学资源共享平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 类图设计3.3 数据库设计3.3.1 课程档案表3.3.2 课程资源表3.3.3 课程作业表3.3.4 课程评价表 四、系统展…