Linux [权限]

news2024/11/28 9:37:39

Linux 权限

  • Linux用户分类
    • 切换成root
      • 方法
      • 例子
    • 切换成普通用户
      • 方法
      • 例子
    • 短暂提权
  • 什么是权限
    • 理论知识
    • 展示区域
  • 修改权限
    • (1)修改文件属性
      • 1. 采用 w/r/x的形式
      • 2. 采用八进制的形式
    • (2)修改身份
      • 1. 修改拥有者
      • 2. 修改所属组
      • 3. 修改拥有者 && 所属组
  • 问题区
    • 问题1
    • 问题2
    • 问题3

Linux用户分类

通过前面的学习, 我们知道了Linux下的用户分成两类:

  1. 超级用户(root): 一般不受权限的限制
  2. 其他用户: 会受到权限的限制

切换成root

方法

su — — 身份切换过去, 但是家目录不变(并不是重新登录了一下)
su - — — 家目录发生变化, 重新登录一下

例子

  • 我们发现:
  • su(-) 默认指令就是切换到root的
  • 由普通用户切换到root, 都要输入root的密码
  • 回退到上一个用户 — — exit 或者 ctrl + d

切换成普通用户

方法

su 普通用户

  1. 由root切换到普通用户 — — 不用输入密码
  2. 由A普通用户切换到B普通用户 — — 需要输入B用户的密码

例子

  • 通过上面两种用户的相互切换, 我们不难发现:
    root用户的权限 > 普通用户的权限

短暂提权

相信, 以后工作的大部分时间我们用的都是普通用户
那么如果有一种需求 — — 需要短暂使用root用户权限, 那么我们该怎么办?👇👇👇
sudo 指令 — — 对这个指令使用root用户的权限


🗨️这个的使用结果为什么事失败的啊??

  • 因为我们现在都是用 adduser 来创建用户, 然后系统不信任你⇒ 因为你没有在系统信任的白名单中(在一个特定的配置文件中)
    🗨️那么失败的原因是理解了. 为什么要输入的是 mutong用户的密码 啊?
  • 因为用户如果已经在系统信任的白名单中⇒ 那么输入 mutong用户的密码来获得短暂提权, 这不是理所应当的嘛

什么是权限

理论知识

🗨️日常生活中, 我们所熟知的权限是什么? 包含哪几个方面?

  • 分析问题, 我们要全面的进行分析, 从特殊中总结出共性
    一般是从 主体客体这两个方面进行分析
    主体:
    第一个例子: 当我们观看腾讯的VIP视频, 被告知没有权限去观看. ⇒ 人的身份/角色
    客体:
    第二个例子: 我们能不能把练习纸当做面包吃掉用来填饱 ⇒ 事物的原本属性
    ⇒ 日常生活中的权限总结起来就是 人的身份/ 角色 + 事物的原本属性
    由于, Linux下一切都是文件⇒ 事物的属性 ⇒ 文件的属性

Linux下的权限 = 人的身份/ 角色 + 文件的属性

🗨️那么身份有哪一些? 文件有哪些属性呢?

  • 在Linux中:
    用户的身份有三种: 拥有者, 所属组, 其他
    文件的属性有三种: 可读(r), 可写(w), 可执行(x)

🗨️前面说用户分类有root 和 普通用户; 现在身份的划分又有 拥有者, 所属组 和 其他. 这很冲突啊?

  • 现在我们这样想:
    普通用户是我们学生, root用户是校长
    但是不管是学生还是校长, 在日常生活中都有着不同的角色, 比如父亲, 孩子… …
    在Linux中, 身份只有这三种可能性. 不管是普通用户还是root用户, 都会有这三种身份的可能性.
    ⇒ 这不是冲突的, 可以说是身份是用户的一种补充吧~~
  • 身份 和 文件属性都已经明白了, 那么在哪里可以看我这个用户有哪些权限呢?


🗨️拥有者, 所属组看见了, 其他呢?

  • 考虑到其它 太多了⇒ Linux采用的是 if (拥有者) else if (所属组) else (其它) 这样的一个逻辑链路来进行 认定用户身份的.

🗨️上面 muyu 即是拥有者 也是所属组, 那么权限是两个叠加吗?



  • 上面的例子中, muyu即是拥有者也是所属组. 拥有者的权限只有 r , 而所属组的权限是 r w
    按照我们的猜想, 应该是权限的叠加 ⇒ 那就意味着muyu 的权限是 r w
    当我们 查看该文件时, 是OK的; 但是当我们写一段东西到该文件就不行了

    其实, 具体的一个用户, 权限的选择只能是一个. 身份是存在着优先级的 拥有者 > 所属组
    muyu该用户进行身份认定的时候, 看到有拥有者, 就不用看后面的了.

展示区域


在上述例子中:
muyu — — 拥有者 r w
root — — 其它 r
mutong — — 其它 r
muyu可读可写, mutong可读不可写这都很正常
root 也可读可写

这就突出了root超级用户的强大, 一般不受权限的限制
普通用户会受到权限的限制

修改权限

权限是由 身份/角色 和 文件属性两部分组成.
所以, 修改权限也是这两个方面的修改

(1)修改文件属性

由于文件权限的特殊表示方法, 故修改文件权限也有两种方法

1. 采用 w/r/x的形式

在这个方法里:
拥有者 u (user)
所属组 g (group)
其它 o (other)

chmod u/g/o +(-) 文件

特例: chmod a +(-) u/g/o 文件


通过上图的结果可以看出:chmod [一个整体] 文件

🗨️我有一个疑问: 其它(普通用户)肯定修改不了, 那么所属组可不可以进行修改呢?



  • 合作 未被允许 — — 说明所属组不能进行修改
    拥有者 和 root用户 才可以进行文件属性的修改

2. 采用八进制的形式

🗨️为什么可以采用进制的形式?? 为什么是八进制而不是其他的进制??

  • 文件属性有着两大特点:
    1. 每个位置的含义都是确定的.即 顺序都是 r w x
    2. 每个位置的选择只有两种 Y or N, 这种也可以看作每个位置的选择只有 1 或 0
      ⇒ 故可以采用 进制的方式
      又因为三个为一组, 进制表示最小为 000, 最大为111 ⇒ 是八进制
      ⇒ 故修改文件的属性可以采用八进制的形式.

(2)修改身份

身份包括 三种:拥有者, 所属组, 其它
但是我们修改身份的时候只用修改两种: 拥有者 和 所属组
其它不用修改 ⇐ 一个用户不是拥有者, 不是所属组, 那么就是其它喽

1. 修改拥有者

指令是 chown

我们先尝试直接用 chown来进行操作👇👇👇

我们想把拥有者的身份给 mutong 用户, 但是被告知 合作未被允许
为什么会出现这种情况?? 那我们该如何修改拥有者的身份呢?

  • 现实生活中, 如果我们要把一个东西给另一个人, 方式有两种
    1. 尊重对方的选择 ⇒ 这种在Linux中不大可能实现
    2. 强制给 ⇒ 这种就是root行为啊
      ⇒ 那么不同的用户就有不同的选择:
      1. 普通用户, 对这条命令进行暂时提权sudo — — sudo chown 用户(后) 文件名
      2. root用户 — — chown 用户(后) 文件名

2. 修改所属组

指令是 chgrp

我们也先尝试直接用 chgrp来进行操作👇👇👇

发现这个是跟上面是一样的结果.
[总结]:

  1. 普通用户 — — sudo chgrp 用户(后) 文件
  2. root用户 — — chgrp 用户(后) 文件

3. 修改拥有者 && 所属组

指令是 chown
同时改变拥有者 和 所属组:

  1. 普通用户 — — sudo chown 拥有者(后):所属组(后) 文件
  2. root用户 — — chown 拥有者(后):所属组(后) 文件

问题区

问题1


🗨️ 为什么创建的普通文件的起始权限是 664, 目录文件的起始权限是 775 ?

先插一句:
普通文件的起始权限是 666
目录文件的起始权限是 777

  • 在Linux中存在一中 名叫 权限掩码 的东东, 记作 umask. 它存在的意义就是 在权限掩码出现的权限, 在文件的最终权限是不会出现的
    先来看一下权限掩码吧👇👇👇

    在我的centos版本下, 权限掩码默认值是 0002. 其实可以把它拆解成两个部分 第一个0 + 后面的八进制表示
    即umask就是用八进制来表示的, 第一个0可以视为无用
    ⬇️⬇️⬇️

    那么我们就把上面的问题回答清楚了
  • 其实 umask是可以修改的 — — umask 值(后)

问题2

🗨️拥有者muyu 的d1 文件有 r属性, 为啥进不去d1目录呢?? 目录文件的各个属性又都是什么啊??

  • 如果我们把拥有者的 x 权限放开呢??
    在这里插入图片描述
    如果我们把d1 的 r 关闭 x 打开 呢?

    通过上面的三组例子, 不难看出:
    x权限关闭, r权限打开 — — 进不了d1 目录文件里面, d1 目录里面的内容虽然没有权限查看(因为进不去啊), 但是还是输出里面的内容 test.c
    x权限打开 — — 可以进入d1 目录文件里面
    r权限关闭 — — 查看不了d1 目录里面的内容

    不难得出以下的结论:

目录文件:
r — — 是否允许用户查看指定目录下的内容
x — — 是否允许用户进入目录
w — — 是否允许用户在当前目录下进行创建, 修改, 删除👇👇👇


在这里插入图片描述

问题3

🗨️如何创建一个共享文件, 使得多个用户可以共同编辑?


  • 首先, 先确定文件创建的位置
    • 我们首先想到的是每一个用户的家目录下是否可以⬇️⬇️⬇️

      我们发现每一个用户的家目录下 拥有者 和 所属组 都是用户本身只有拥有者的权限是全开的, 除了拥有者其他的身份的权限都是关闭的
      ⇒ 故不能在每一个用户的家目录下创建一个共享文件
      既然每一个用户的家目录不能, 那么根目录肯定可以⬇️⬇️⬇️

      我们可以看出 根目录的 拥有者 和 所属组都是 root用户 ⇒ 所以 跟目录下创建一个共享文件必须是 root用户
      OK, 我们先在根目录下创建一个共享文件看一下⬇️⬇️⬇️

      这时候我们进行一些基本操作

      这个时候, muyu用户跟mutong用户有了矛盾, 不想让mutong用户有test.c的相关权限⇒ 这导致mutong用户想删掉test.c文件

      muyu用户这个时候就比较恼火, 我把mutong的所有权限都关闭了, 为什么还会删掉我创建的文件啊??
      muyu 百思不得其解? 聪明的你是否有了答案~~
      删除一个文件不是由文件本身的权限决定的, 是由它所在的目录的权限决定的 (文件所在目录的 w权限)
      让我们来看看 temp目录的权限👇👇👇

      原来 其它的 w 权限是开的啊~~
      这个时候, muyu用户就请求root用户把 其它的 w 关闭

      哦豁, 我么发现这样, 我们也不能 创建, 修改文件了
      芭比Q了, 这样就是去共享的意义了啊
      ⇒ 基于有以上的需求:
      1. muyu用户想关闭掉 mutong用户的删除权限
      2. 但是删除一个文件不是由文件本身的权限决定的, 是由它所在的目录的权限决定的 `(文件所在目录的 w权限)
      3. 关闭目录的 w权限就会导致失去共享文件的意义

t粘滞位应运而生给目录设置一个 粘滞位, 只允许拥有者 或者 root用户才能删除目录下的文件

  • 其实 根目录下就已经存在一个共享文件 tem
    在这里插入图片描述

把话讲透,可以骂娘,不准记仇

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

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

相关文章

实在智能携手各高校打造高端数字化技能教育平台

百年大计,教育为本。2021年在《教育部办公厅关于印发高等职业教育专科英语、信息技术课程标准)的通知中把机器人流程自动化列入专科信息技术课程学习计划之中,进一步明确职业教育中数字化人才发展方向。 一、为什么要大力培养数字化人才&…

毕业5年的同学突然告诉我,他已经是年薪30W的自动化测试工程师,我愣住了...

作为一名程序员,都会对自己未来的职业发展而焦虑。一方面是因为IT作为知识密集型的行业,知识体系复杂且知识更新速度非常快,“一日不学就会落后”。 另外一方面,IT又是劳动密集型的行业,不仅业人员多,而且个…

随机梯度下降法

梯度下降法有两个比较大的缺点: --计算花时间 --容易陷入局部最优解 比如以下形状的函数,最优解取决于初始值的选取。 梯度下降法的表达式如下,这个表达式使用了所有训练数据的误差: 随机梯度下降法表达式: 在随机梯…

Cmake学习记录(九)--使用Cmake交叉编译.so库

文章目录 一、前言二、相关代码三、参考链接 一、前言 目前Android编译.so的话使用Android Studio比较简单,但是有时候时候Android Studio的话还需要创建一个Android的项目,这里记录下脱离Android Studio单纯使用Cmake和C开发工具Clion(或者其他的开发工…

Prometheus+grafana+node_exporter环境搭建

原理: node_exporter采集数据,Prometheus通过配置文件Prometheus.yml配置node_exporter信息获取采集到的数据并做展示,grafana将Prometheus作为数据源展示node_exporter采集到的数据 拓扑图 问题: 1)为什么不直接用…

万众瞩目的Nautilus Chain即将上线主网,生态正式起航

Zebec Protocol 是以流支付为定位 Web3 生态,该生态旨在构建一个全新的支付方式,以进一步丰富加密支付场景,并推动加密支付的大规模采用,该生态此前在 Solans 生态中曾取得了十分亮眼的成绩。目前,Zebec Protocol 正在…

Unity MVC实现背包系统(2)

在上一篇中,我们写了背包系统的伪代码,也说了mvc的设计思路,那么这一篇的任务就是将伪代码补全。 首先制作一个背包面板,我这里比较简单,就是一个滚动视图,还有一个提示文本,外加两个按钮&…

20230530论文整理·1-课题组1

个人观点,现在的NLP文章,有些是在做积木,微创新,有些文章,是可以的,读起来很美,有些,太过逆了,吃起来没味道,反胃。 文章目录 1.CODEIE: Large Code Generat…

【.NET AI Books】问题分类和技能使用大全

第一章 问题分类 我会把问题设定放在首位,也就是我们的第一章。毕竟所有生成式的 AI 都是需要基于问题给出答案。所以我一直不认同人工智能会取代人类,没有人类哪来问题呢? ChatGPT 的神奇之处在于它可以根据你的问题去完成不同的工作&…

【Python实战】Python采集C站热榜数据

前言 大家好,我们今天来爬取c站的热搜榜,把其文章名称,链接和作者获取下来,我们保存到本地,我们通过测试,发现其实很简单,我们只要简单获取数据就可以。没有加密的东西。 效果如下: 环境使用 python 3.9pycharm模块使用 requests模块介绍 requests requests是…

95后阿里P7架构师晒出工资单:狠补了这个,真香...

最近一哥们跟我聊天装逼,说他最近从阿里跳槽了,我问他跳出来拿了多少?哥们表示很得意,说跳槽到新公司一个月后发了工资,月入5万多,表示很满足!这样的高薪资着实让人羡慕,我猜这是税后…

阿里云的消息队列(MQ)服务如何帮助解决应用程序中的消息传递问题?

阿里云的消息队列(MQ)服务如何帮助解决应用程序中的消息传递问题?   [本文由阿里云代理商[聚搜云www.4526.cn]撰写]   随着企业应用程序的复杂性不断增加,消息传递在系统间的通信与协作中扮演着越来越重要的角色。本文将探讨阿里云的消息队列&#x…

Vue-组件的嵌套

组件的嵌套 组件的嵌套也是开发中比较常见的方式 一个大组件里面有多个小组件,大组件一般称为父组件,小组件称为子组件 1 编写案例 首先定义一个school组件 提出新的需求:现在我想在school里面定义一个子组件(student)出现 首先创建student组件&…

uni-app扩展组件(uni-ui)

目录 数字角标(uni-badge) 代码示例: 面包屑(uni-breadcrumb) 代码示例: 日历 代码示例 卡片(uni-card) 代码示例 倒计时(uni-countdown) 更多内容请访问官网 数字角标(uni-badge) 数字角标一般和其它控件(列表、9宫格等&#xff0…

网络编程--多线程服务器客户端

写在前面 此前的回声服务器/客户端都是在主线程中阻塞交互,本文将使用多线程方式实现服务器/客户端。 互斥量相关接口 使用多线程,自然避免不了线程同步问题。 因本文使用互斥量实现线程同步,因此仅介绍互斥量相关接口,其他实…

【MySQL高级篇笔记-索引的数据结构 (中) 】

此笔记为尚硅谷MySQL高级篇部分内容 目录 一、索引及其优缺点 1、索引概述 2、优点 3、缺点 二、InnoDB中索引的推演 1、设计索引 1.一个简单的索引设计方案 2.InnoDB中的索引方案 2、常见索引概念 1. 聚簇索引 2. 二级索引(辅助索引、非聚簇索引&#…

Java阶段三Day06

Java阶段三Day06 文章目录 Java阶段三Day06同步请求和异步请求案例演示创建SpringBoot工程application.propertiesUserControllerUserMapper静态页面 JSONSpring Security引入SpringSecurity框架对项目的影响关于SpringSecurity的配置默认登录表单设置白名单模拟登录使用自己的…

用pycharm来下载super-grandients 出现的错误

主要用来记录我用pycharm来下载super-grandients的一些错误 文章目录 1、UserWarning: Distutils was imported before Setuptools.1、distutils 2、pycharm的虚拟环境安装的包在c盘3、虚拟内存不够 1、UserWarning: Distutils was imported before Setuptools. UserWarning: …

系统集成项目管理工程师(系统集成基础知识)

第一章信息化知识 一、信息的概述 1、信息(information)是客观事物状态和运动特征的一种普遍形式;事物的本体论信息,就是事物的运动状态和状态变化方式的自我表述。 二、信息的传递 2、信息技术主要为解决信息的采集、加工、存储、传输、处理、计算、…

设计模式之~适配器模式

描述: adapter将一个类的接口转换成客户希望的另外一个接口。adapter模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。 在软件开发中,当系统的数据和行为都正确,但接口不符时,我们应该考虑使用适配器,目的…