【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux

🤣 爆笑教程 👉 ​​《看表情包学Linux》​​👈 猛戳订阅  🔥

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_02

💭 写在前面

本章我们将重点讲解 Linux 权限,这是 Linux 基础部分中非常重要的一部分。内容比较干,我会稍稍正经些去讲解。话不多说,我们直接切入正题。

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_03

  11


 

Ⅰ. shell 命令及运行原理

0x00 什么是 shell

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_04

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_05

 严格意义上说的是一个操作系统,我们称之为 ——

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_06

 (核心), 但我们一般用户,是不能直接使用

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_06

 的,而是通过

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_06

 的 "外壳" 程序,也就是所谓的 

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_09

 ,来与

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_06

 进行 "沟通 " 。

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_普通用户_11

 

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_05

中,

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_09

 就是命令行解释器(command Interpreter),其主要包含:① 将使用者的命令翻译给

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_06

 处理。  ② 同时将

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_06

 的处理结果翻译给使用者。

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_普通用户_16

 

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_17

 中,

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_09

 就是  

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_17

 

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_20

 (图形化界面),我们操作

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_17

 也不是直接操作

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_17

 内核的,

而是通过图形接口,点击从而完成我们的操作,所以其实也是一个外壳程序。

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_23

 

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_09

 对于

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_05

,有相同的作用,主要是对我们的指令进行解析,解析指令给

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_05

 内核。反馈结果在通过内核运行出结果,通过

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_09

 解析给用户。

0x01 shell 的意义

❓ 思考:为什么不能直接使用 

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_06

,而是要通过 

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_09


① 降低操作 OS 的成本:用户不善于和内核沟通,需要通过外壳来做解释。

② 

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_09

 保护操作系统:外壳的存在让内核不会暴露给用户,用户所有的非法、不合理操作会直接被外壳拦住,某种意义上来说是对操作系统的一种保护。

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_普通用户_31

 我们通常采用的命令行解释器,命令并不是

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_09

而是 bash,

它是存在于 /usr/bin 目录下的一个可执行文件:

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_33

我们的 

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_34

 常用的命令行解释器(shell),叫做 bash。

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_35

 他们两个之间有什么关系呢?

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_09

 是所有解释器的统称,bash 是具体的一款解释器。bash 属于 

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_09

中的一种,常见的 

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_09

工具:sh、bash、csh、tcsh、ash 等。

它们的关系就像是 Linux 和 Centos7.6 的关系,一个是统称的,一个是具体的。

Ⅱ. Linux 权限

0x00 Linux 具体用户的分类

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_39

 Linux 的用户分为 root 和普通用户,root 为超级用户,就像 Windows 系统中的管理员。

  • 超级用户:可以在 Linux 系统下做任何事情,不受限制。
  • 普通用户:在 Linux下做有限的事情。
  • 超级用户的命令提示符是 # ,普通用户的命令提示符是 $

💭 确认当前你是哪个用户,可以输入 whoami 指令:

whoami

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_普通用户_40

💭 我们当前是普通用户,如果想切换至 root 用户,我们可以输入 su -

su -

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_41

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_42

 root 和 Linux 下任何一个用户,都要设置密码。

建议不要把 root 密码和普通用户的密码设置成一样的!

设置成一样的话现阶段容易搞混,你不知道什么时候要输的是什么密码。

这里我们要切到 root,所以输入的是 root 的密码:

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_43

 (输入密码时是不回显的,并不是没输进去)

💭 实操:当我们 su -

$ su -
Password:

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_44

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_普通用户_45

 在 root 用户下,想要切到普通用户甚至连密码都不需要输:

# su [用户名]

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_46

当然,如果你是普通用户想切换到另一个普通用户,当然还是需要输入密码的。

$ su [用户名]
Password:

root 什么身份都可以切,切到你账户删库跑路记录的还是你账户自己删的。

即便是不切,通过 root 拿你数据库的 "私♂密♂数♂据", 多危险!由此可见 root 账号非常重要!

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_47

 root 密码一定不能设置的太简单!设置的太简单,就相当于是 "裸奔" !

0x01 Linux 中文件相关的权限概念

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_48

 当我们输入 ls -l

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_49

通过 ls -l 显示出来的是 文件的属性,而用过 cat 看到里面的是 文件的内容

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_50

0x02 文件类型

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_51

 我们既然要学习权限,我们重点要理解 ls -l

-rw-rw-r--
drwxrwxr-x

第一列的第一个字符,叫做 "文件类型" 。

Linux 中不是以文件名后缀区分文件类型的,而是通过 ls -l 显示的第一个字符区分文件类型的。

这有点颠覆我们的直觉,因为我们 Windows 是文件末尾 [ .类型 ] 的格式去区分文件类型:

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_52

  

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_普通用户_53

 而在 Linux 下你跟我说文件类型跟后缀没有关系?!我们验证一下看看:

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_普通用户_54

在我们 Windows 下,这里的 a.txt

Linux 的文件后缀纯属摆设,我们写后缀只是是为了给自己看的。

📚 概念:Linux 是根据第一列第一个字符去区分文件的类型的。

  •  -
  •   管道文件
  •   块设备文件,磁盘
  •    字符设备文件

📌 注意事项:

既然 Linux 文件后缀纯属摆设,那我们把 test.c 改成 test.txt,然后用 gcc

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_55

  ( 絕對不可以!)

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_普通用户_56

 虽然 Linux不以文件名后缀区分类型,但是 Linux 并不排斥以后缀做文件类型。


0x03 基本权限

❓ 思考:什么是权限?

① 约束人的(对人进行分类)

② 需要对应的事物具有特定的属性

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_57

 Linux 上,对文件的权限:

这个文件谁能访问?这个文件谁不能访问?

对应的文件应该具备的某种属性:r,w,执行 x

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_普通用户_58

所以权限的概念以及操作都是围绕人和概念的属性展开的。

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_普通用户_59

 在 Linux 系统中,人分三类:

① 文件的拥有者 owner     ② 文件的所属组 grouper       ③ 文件的其他用户 other


Linux 系统中文件的权限属性分为 r(读)、w(写)、x(可执行)。

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_60

root 和普通用户都可称为文件的拥有者、所属组、其他用户,他们并不冲突,反而是相互补充的。

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_普通用户_61

  每一组,对应的权限的为止含义是确定的。

那么文件的权限操作,应该涉及到几方面呢?  ① 修改文件的属性    ② 修改人


0x04 文件权限值的表示方法

📚 字符表示方法:

Linux 表示

说明

Linux 表示

说明

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_62

只读

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_63

仅可写

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_64

仅可执行

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_普通用户_65

可读可写

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_66

可写可执行

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_67

可读可执行

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_68

可读可写可执行

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_69

无权限

只需要搞明白 r w x - 这四个字符分别代表说明意思,就能轻松理解。


📚 八进制数值表示方法:推荐使用 👍

权限符号(读写执行)

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_70

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_71

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_72

4

100

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_73

2

010

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_普通用户_74

1

001

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_75

6

110

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_76

5

101

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_77

3

011

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_68

7

111

- - -

0

000

(利用八进制数值进行操作,用起来会非常的方便,等下面讲完文件的修改操作后再详细讲解)


0x05 file 指令

❓ 思考:如何区分一个文件?

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_79

显然这一串信息是无法满足我们了,我们还有一个专门用来辨识文件类型的指令 —— file 指令。

file [选项] 文件或目录

🔨  功能:辨识文件类型

📜  常用选项:

  • -c
  • -z  尝试去解读压缩文件的内容。


💭 操作演示:file

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_80



Ⅲ. 文件权限的修改

0x00 chmod 指令

chmod [参数] 权限 文件名

🔨  功能:设置文件的访问权限

📜  常用选项:

  • R -> 递归修改目录文件的权限。
  • 说明:只有文件的拥有者和root才可以改变文件的权限。

chmod 命令权限值的格式:

① 用户表示符+/-=权限字符

  • +
  • -

用户符号:  

  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户
比如:
# chmod u+w /home/abc.txt
# chmod o-x /home/abc.txt

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_81

 看蒙了也没关系,我们直接看操作演示,会轻松很多:


💭 操作演示:去掉某身份的权限

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_普通用户_82

如果我想去掉某身份的读权限,我们可以:

chmod [分类]-[权限] {文件名]     # 去除权限

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_83

好,现在拥有者、所属组和 other 都没有读的权限了。

我们可以给让它们把读权限加回去吗?当然可以:

chmod [分类]+[权限] {文件名]     # 添加权限

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_84


0x01 指令的复合使用

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_85

 当然,还允许复合使用:

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_86


0x02 root 用户不受权限约束

当你什么权限都没有时,会受到种种限制:

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_87


【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_88

 然而这些限制对至高无上的 root 来说,并没有什么卵用:

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_89


0x03 八进制数值表示方法

讲完权限的修改了,我们再回到 Ⅱ.0x04 

权限符号(读写执行)

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_70

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_71

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_72

4

100

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_73

2

010

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_普通用户_74

1

001

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_75

6

110

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_76

5

101

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_77

3

011

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_68

7

111

- - -

0

000

任何一个八进制数(0~7)都可以被写成三个比特位,这三个比特位壹壹和每一类人对应。

我们有三类人,则需要3个八进制数与之对应,所以就有了 777、000、333 等更改权限的方案。

譬如 

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_99

 的 - - - 分别对应 

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_100

  ,有或者无(两态),111 → 八进制 → 7。

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_99

→ 5 → 101 → 

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_102

,原理是将八进制看作成二进制,对应上我们的权限。


💭 用法演示:八进制数值表示方法

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_103



Ⅳ. 文件权限的转让

0x00 chown 指令

chown [用户名] [文件名]     # 修改文件的拥有者

如果我是一个文件的拥有者,我想把文件给别人:

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_104

❓ 思考:当你想给别人东西的时候,要不要经过别人的同意?

当然需要!这里我们可以用 sudo

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_普通用户_105

(sudo 有一个叫信任列表的东西,你现在输入如果出现报错是因为 root 没有把你添加到信任列表里,这个我们后期讲完 vim 之后再说。在 /etc/sudoers 路径下。)


当然我们还可以直接切换成 root,通过 root 去给,别人不要也不行,就是这么🐂🍺。

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_106

 (root 无视权限)

一个文件的创建者和拥有者一定是同一个人吗?

通过我们刚才修改文件的拥有者,我们就能得出 —— 不一定。


0x01 chgrp 指令

chgrp [用户名] [文件名]     # 修改文件的所属组

和 chown 一样的用法,我们可以用 chgrp

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_107



Ⅴ. 目录的权限

0x00 目录的权限

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_普通用户_108

我们来去掉

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_109

 权限,看看到底能不能进入这个 dir:

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_110

这就说明进入一个目录跟 

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_109

 没有关系。

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_112


❓ 如果我想进入一个目录,需要说明权限?

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_113

如果目录只没有

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_服务器_109

 权限,允许进入、允许在该目录下创建(写入)文件,只不过是不允许查看:

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_115


【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_113

如果目录只没有

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_117

 权限,允许进入,允许在该目录下查看文件列表,但是不允许创建文件:

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_118


【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_113

如果同时没有 

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_75

权限,允许进入,但是不允许创建和查看目录下的文件列表:

(注意:不是文件内容,文件的内容是否可以查看由文件自己的权限决定)

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_121


💡 Linux 下一切皆文件,目录也是文件。再结合 "文件 = 内容 + 属性" 去理解。

目录里面保存的是部分文件的 "属性" 。

(文件名和 id 之间是有对应的映射关系的,有可能被系统缓存了)


0x01 默认创建后的权限

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_122

为什么创建目录的默认权限是 775,而创建普通文件的默认权限是 664 ?

不同系统可能有差异吗?

创建的时候为什么不可以都是 777,权限都给我怼上呢?


📚 默认权限:① 默认目录的起始权限:777      ② 默认普通文件的权限:666

既然如此,那为什么不是 777 / 666,而是 775 / 664 呢?

💡 默认权限 != 最终权限,Linux 中的最终权限 = 默认权限 "去掉" umask 中存在的权限。


0x02 umask 权限掩码

因为系统中有一个默认的 "权限掩码" ,叫做 umask:

umask     # 打印权限掩码

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_123

📚 权限掩码:凡是在权限掩码中出现的权限,都不应该在最终权限中出现!

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_普通用户_124

所以,最后目录的默认权限变为了 775,文件权限变为了 664。


❓ 思考:所谓的 "去掉" umask

💡 这里的 "去掉" 并不是减去。首先要说的是,umask 是可以修改的:

umask [掩码]      # 修改umask掩码

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_125

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_126

 由此可见,我们的权限确实是受 umask

最终权限 = 默认权限 & (~umask)



Ⅵ. 粘滞位(Sticky bit)

0x00 共享目录

Linux 下可以存在一些目录,拥有者和所属组是 root,

其他人允许以 other 的身份在该目录下进行文件的创建、读取、删除和修改等操作:

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_127

📌 注意事项:在一个共享目录下,你不让我写,不让我读,但防不住我删除!

比如,有两个普通用户,用户A想让用户B访问它的文件,于是就 chmod 把 other 的

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_75

 全撤咯,

于是用户B急了,恼羞成怒,啊你不给我用你也别想用了,得不到就毁掉!直接给你把文件删了。

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_129

 如果你仍然是想在共享目录下形成临时文件,但又怕别人给你删了,

你可以给共享的 <目录> 加上粘滞位来解决。

注意,是给目录加粘滞位!即你共享哪个目录,你就在哪个目录下加上粘滞位。

我们下面来隆重介绍一下 Sticky bit ——粘滞位。


0x01 粘滞位

chmod +t [目录名]     # 添置粘滞位

💭 以 root 身份给 all 目录添置粘滞位:

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_运维_130

目录设置了粘滞位 

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_131

后,作为 other 就无法随意地删除其他用户的文件了:

【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_八进制_132

不过 root 还是想删就删,想干啥就干啥。

还是那句话 —— 普通用户再怎么进行文件操作,对 root 都是无效的。



【看表情包学Linux】shell 命令及运行原理 | Linux 权限 | 文件权限的修改和转让 | 目录的权限 | Sticky bit 粘滞位_linux_133

📌 [ 笔者 ]   王亦优
📃 [ 更新 ] 2022.7.12
❌ [ 勘误 ] /* 暂无 */
📜 [ 声明 ] 由于作者水平有限,本文有错误和不准确之处在所难免,
本人也很想知道这些错误,恳望读者批评指正!

📜 参考资料 

C++reference[EB/OL]. []. http://www.cplusplus.com/reference/.

Microsoft. MSDN(Microsoft Developer Network)[EB/OL]. []. .

百度百科[EB/OL]. []. https://baike.baidu.com/.

比特科技. Linux[EB/OL]. 2021[2021.8.31 xi