Linux [权限]

news/2024/11/30 9:00:33/

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.ppmy.cn/news/109094.html

相关文章

图解系列 图解Spring Boot 最大连接数及最大并发数

文章目录 概序架构图TCP的3次握手4次挥手时序图核心参数AcceptCountMaxConnectionsMinSpareThread/MaxThreadMaxKeepAliveRequestsConnectionTimeoutKeepAliveTimeout 内部线程AcceptorPollerTomcatThreadPoolExecutor 测试参考 每个Spring Boot版本和内置容器不同,…

正规文法、正规表达式、有限自动机及其之间的转换(笔记)

The Equivalent Transforming among RG, RE and FA 正规文法 A Grammar G is a quadruple (四元组):G (VN, VT, S, P ) Where, VN is a finite set of nonterminals.VT is a finite set of terminals.S is the start symbol, S ∈ \in ∈ VN.P is a finite set of product…

ProtoBuf 语法(三)

系列文章 ProtoBuf 语法(一) ProtoBuf 语法(二) 文章目录 九、option 选项9.1 选项分类9.2 常用选项 十、ProtoBuf 与 JSON 的性能对比10.1 序列化能力对比10.2 总结 九、option 选项 .proto文件中可以声明许多选项,使…

《商用密码应用与安全性评估》第四章密码应用安全性评估实施要点4.1密码应用方案设计

4.1设计原则 密码应用方案设计是信息系统密码应用的起点,它直接决定着信息系统的密码应用能否合规、正确、有效地部署实施。 ①总体性原则:密码在信息系统中的应用不是孤立的,必须与信息系统的业务相结合才能发挥作用。 ②科学性原则&#xf…

STM32单片机(三)第三节:GPIO输入

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要…

Ethercat学习-从站FOE固件更新(QT上位机)

文章目录 简介1、源码简介1、ec_FOEread2、ec_FOEwrite3、ec_FOEdefinehook 2、程序思路3、修改实现1、ecx_FOEwrite_gxf2、ecx_FOEread_gxf 4、其他5、结果6、源码连接 简介 FOE协议与下位机程序实现过程之前文章有提到,这里不做介绍了。这里主要介绍1、QT上位机通…

Python 中的循环向后迭代

文章目录 在 Python 中向后循环使用 reserved() 函数向后循环使用 range() 函数向后循环 总结 在 Python 中,数字迭代是通过使用循环技术来完成的。 在本文中,我们使用 Python 中的 reserved() 函数和 range() 函数执行循环。 在 Python 中向后循环 有许…

ChatGPT与网络安全

文章目录 一、“AI用于攻击”二、“AI用于安全(防御)”三、“AI的防御”四、“AI被攻击” ChatGPT作为基于生成式预训练模型(GPT)的聊天机器人,其核心技术是自然语言处理(NLP)。随着NLP技术的不…