Linux [权限]

简介: Linux [权限]

Linux用户分类

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


1.超级用户(root): 一般不受权限的限制

2.其他用户: 会受到权限的限制


切换成root

方法

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

su - — — 家目录发生变化, 重新登录一下


例子

9b11de25e1ca49f7b71566d3c47b309e.png


我们发现:

su(-) 默认指令就是切换到root的

由普通用户切换到root, 都要输入root的密码

回退到上一个用户 — — exit 或者 ctrl + d


切换成普通用户

方法

su 普通用户

1.由root切换到普通用户 — — 不用输入密码

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

例子

a39b742c21754c08b02385a232442e8d.png


通过上面两种用户的相互切换, 我们不难发现:

root用户的权限 > 普通用户的权限

短暂提权

相信, 以后工作的大部分时间我们用的都是普通用户

那么如果有一种需求 — — 需要短暂使用root用户权限, 那么我们该怎么办?👇👇👇

sudo 指令 — — 对这个指令使用root用户的权限

2c554f70c6434e5ba3c4d0a7a71ed874.png


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


因为我们现在都是用 adduser 来创建用户, 然后系统不信任你⇒ 因为你没有在系统信任的白名单中(在一个特定的配置文件中)

🗨️那么失败的原因是理解了. 为什么要输入的是 mutong用户的密码 啊?

因为用户如果已经在系统信任的白名单中⇒ 那么输入 mutong用户的密码来获得短暂提权, 这不是理所应当的嘛


什么是权限

理论知识

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


分析问题, 我们要全面的进行分析, 从特殊中总结出共性

一般是从 主体 和 客体这两个方面进行分析

主体:

第一个例子: 当我们观看腾讯的VIP视频, 被告知没有权限去观看. ⇒ 人的身份/角色

客体:

第二个例子: 我们能不能把练习纸当做面包吃掉用来填饱 ⇒ 事物的原本属性

⇒ 日常生活中的权限总结起来就是 人的身份/ 角色 + 事物的原本属性

由于, Linux下一切都是文件⇒ 事物的属性 ⇒ 文件的属性

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


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


在Linux中:

用户的身份有三种: 拥有者, 所属组, 其他

文件的属性有三种: 可读(r), 可写(w), 可执行(x)

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


现在我们这样想:

普通用户是我们学生, root用户是校长

但是不管是学生还是校长, 在日常生活中都有着不同的角色, 比如父亲, 孩子… …

在Linux中, 身份只有这三种可能性. 不管是普通用户还是root用户, 都会有这三种身份的可能性.

⇒ 这不是冲突的, 可以说是身份是用户的一种补充吧~~

身份 和 文件属性都已经明白了, 那么在哪里可以看我这个用户有哪些权限呢?

de3300d4c4b8489f97453eda70c6e573.png

fd66d53b19a34a6494c7e08089067329.png


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


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

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


f14a7132e09a4fec8d9c57a98a6c6278.png


上面的例子中, muyu即是拥有者也是所属组. 拥有者的权限只有 r , 而所属组的权限是 r w

按照我们的猜想, 应该是权限的叠加 ⇒ 那就意味着muyu 的权限是 r w

当我们 查看该文件时, 是OK的; 但是当我们写一段东西到该文件就不行了

其实, 具体的一个用户, 权限的选择只能是一个. 身份是存在着优先级的 拥有者 > 所属组

muyu该用户进行身份认定的时候, 看到有拥有者, 就不用看后面的了.


展示区域

e78de7e575c241708e99e96aa885c715.png

在上述例子中:

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 文件

56f50616b3574df4a9838b916380f075.png


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


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

bbdf0c9b32e14ea8bcadfb28924ee7af.png


合作 未被允许 — — 说明所属组不能进行修改

拥有者 和 root用户 才可以进行文件属性的修改

f627ce11a97e4797a4dc5808b3487e73.png

2. 采用八进制的形式

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


文件属性有着两大特点:

1.每个位置的含义都是确定的.即 顺序都是 r w x

2.每个位置的选择只有两种 Y or N, 这种也可以看作每个位置的选择只有 1 或 0

⇒ 故可以采用 进制的方式

又因为三个为一组, 进制表示最小为 000, 最大为111 ⇒ 是八进制

⇒ 故修改文件的属性可以采用八进制的形式.

9c82db64a46f4c35a8d4895c1b8406b6.png


(2)修改身份

身份包括 三种:拥有者, 所属组, 其它

但是我们修改身份的时候只用修改两种: 拥有者 和 所属组

其它不用修改 ⇐ 一个用户不是拥有者, 不是所属组, 那么就是其它喽


1. 修改拥有者

指令是 chown


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

15eab0db7ecd4c49ba18ec04d9a09a2d.png

我们想把拥有者的身份给 mutong 用户, 但是被告知 合作未被允许

为什么会出现这种情况?? 那我们该如何修改拥有者的身份呢?


现实生活中, 如果我们要把一个东西给另一个人, 方式有两种

尊重对方的选择 ⇒ 这种在Linux中不大可能实现

强制给 ⇒ 这种就是root行为啊

⇒ 那么不同的用户就有不同的选择:

1. 普通用户, 对这条命令进行暂时提权sudo — — sudo chown 用户(后) 文件名

2. root用户 — — chown 用户(后) 文件名

21a03798473a46d98b1133da4e6e7d89.png

2. 修改所属组

指令是 chgrp


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

db8d8606cd7d480bbfbef6f91906625b.png

发现这个是跟上面是一样的结果.

[总结]:


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

2.root用户 — — chgrp 用户(后) 文件

786a37a2c1ea4147ac4c04e13eb1db86.png


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

指令是 chown

同时改变拥有者 和 所属组:


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

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

ef6dfe39245a46d8a41c0d56c8eb3a85.png

问题区

问题1

a65a32590d0e42b7b12fc7552f84b132.png

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


先插一句:

普通文件的起始权限是 666

目录文件的起始权限是 777


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

先来看一下权限掩码吧👇👇👇

25a6e695f8cd4ba6a96b94809ebbfe3c.png

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

即umask就是用八进制来表示的, 第一个0可以视为无用

⬇️⬇️⬇️

5b0cd038cde849c191a509e789bdc3b9.png

那么我们就把上面的问题回答清楚了

其实 umask是可以修改的 — — umask 值(后)

问题2

d2d2b26901bf4dc797240acbc566631c.png


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


如果我们把拥有者的 x 权限放开呢??

d790fbabb2c24770b4105c1ac706e479.png

如果我们把d1 的 r 关闭 x 打开 呢?

77340b7250ea478d88e5536302b9cdd7.png

通过上面的三组例子, 不难看出:

x权限关闭, r权限打开 — — 进不了d1 目录文件里面, d1 目录里面的内容虽然没有权限查看(因为进不去啊), 但是还是输出里面的内容 test.c

x权限打开 — — 可以进入d1 目录文件里面

r权限关闭 — — 查看不了d1 目录里面的内容

不难得出以下的结论:

目录文件:

r — — 是否允许用户查看指定目录下的内容

x — — 是否允许用户进入目录

w — — 是否允许用户在当前目录下进行创建, 修改, 删除👇👇👇

5ecb75a3e4c24aa1abe6ee0dd25d40c6.png

4ee646b04fd844f395d023bc9f31a879.png


问题3

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



首先, 先确定文件创建的位置

我们首先想到的是每一个用户的家目录下是否可以⬇️⬇️⬇️

4f376332bd574367a6106de231d7ee57.png

我们发现每一个用户的家目录下 拥有者 和 所属组 都是用户本身 且 只有拥有者的权限是全开的, 除了拥有者其他的身份的权限都是关闭的

⇒ 故不能在每一个用户的家目录下创建一个共享文件

既然每一个用户的家目录不能, 那么根目录肯定可以⬇️⬇️⬇️

2520843f684847dca27aea36d3c20107.png

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

OK, 我们先在根目录下创建一个共享文件看一下⬇️⬇️⬇️

ad0153896e3f4ed790e288b55a373754.png

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

74b2646d4f2a40abb5a40cd53c26374b.png

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

1c0d3eb22b1e469885ce1f30c9e77dcc.png

muyu用户这个时候就比较恼火, 我把mutong的所有权限都关闭了, 为什么还会删掉我创建的文件啊??

muyu 百思不得其解? 聪明的你是否有了答案~~

删除一个文件不是由文件本身的权限决定的, 是由它所在的目录的权限决定的 (文件所在目录的 w权限)

让我们来看看 temp目录的权限👇👇👇

f41b61e465fb46eea6201656f620c50e.png

原来 其它的 w 权限是开的啊~~

这个时候, muyu用户就请求root用户把 其它的 w 关闭

0dc2a2d85dd34096b97c3d0f859d688b.png

哦豁, 我么发现这样, 我们也不能 创建, 修改文件了

芭比Q了, 这样就是去共享的意义了啊

⇒ 基于有以上的需求:

1. muyu用户想关闭掉 mutong用户的删除权限

2. 但是删除一个文件不是由文件本身的权限决定的, 是由它所在的目录的权限决定的 `(文件所在目录的 w权限)

3. 关闭目录的 w权限就会导致失去共享文件的意义

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

3fbeafcfae424ff5b5a15057ea821348.png


其实 根目录下就已经存在一个共享文件 tem

3d399d3cb3e94394bfc8cb8209bf7738.png



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

相关文章
|
5天前
|
Unix Linux Shell
Linux 权限简介
Linux 权限简介
15 1
|
10天前
|
Linux 数据安全/隐私保护 Windows
Linux专栏10:Linux权限详解(上)
Linux专栏10:Linux权限详解(上)
31 3
|
2天前
|
Shell Linux 程序员
详解shell 运行原理及Linux权限
详解shell 运行原理及Linux权限
|
2月前
|
关系型数据库 MySQL Shell
【权限提升】Linux系统&环境变量&定时任务&权限配置不当&MDUT自动化
【权限提升】Linux系统&环境变量&定时任务&权限配置不当&MDUT自动化
|
2月前
|
监控 安全 Linux
【权限维持】Linux&OpenSSH&PAM后门&SSH软链接&公私钥登录
【权限维持】Linux&OpenSSH&PAM后门&SSH软链接&公私钥登录
|
2月前
|
Linux 数据处理 数据库
深入解析Linux命令id:理解用户身份与权限
`id`命令在Linux中用于显示用户身份(UID, GID和附加组)。它查看系统用户数据库获取信息。参数如`-u`显示UID,`-g`显示GID,`-G`显示附加组,结合`-n`显示名称而非ID。用于确认命令执行者身份,确保权限正确。在脚本中使用时注意权限管理,遵循最小权限原则。
|
2月前
|
Java Linux PHP
【应急响应】后门攻击检测指南&Rookit&内存马&权限维持&WIN&Linux
【应急响应】后门攻击检测指南&Rookit&内存马&权限维持&WIN&Linux
|
2月前
|
监控 网络协议 Ubuntu
【权限维持】Linux&Rootkit后门&Strace监控&Alias别名&Cron定时任务
【权限维持】Linux&Rootkit后门&Strace监控&Alias别名&Cron定时任务
|
1月前
|
关系型数据库 MySQL Linux
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思
|
1月前
|
Linux 数据安全/隐私保护 iOS开发
Linux的root用户,普通用户无法在根录中创建文件,一般在其HOME目录里是不受限的,一旦出了HOME目录,大多数地方,仅有读和执行的权限,ctrl + d回到上一个用户,Exit,su - ro
Linux的root用户,普通用户无法在根录中创建文件,一般在其HOME目录里是不受限的,一旦出了HOME目录,大多数地方,仅有读和执行的权限,ctrl + d回到上一个用户,Exit,su - ro