Skip to content

Commit

Permalink
docs: Update file permissions documentation with ACL details
Browse files Browse the repository at this point in the history
  • Loading branch information
ricolxwz committed Jun 12, 2024
1 parent c0f5289 commit c38ef7e
Showing 1 changed file with 20 additions and 12 deletions.
32 changes: 20 additions & 12 deletions docs/命令行/权限.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ comments: true

## 命令一览

### 文件管理

=== "`chmod`"

**语法**:
Expand Down Expand Up @@ -201,6 +203,8 @@ comments: true
setfacl -P -m u:wenzexu:rwx symlink # 对符号链接symlink本身应用ACL条目
```

### 用户管理

## 安全模型

Linux系统上最初的安全模型为DAC, Discretionary Access Control. 后来又增加了一个新的安全模型为MAC, Mandatory Access Control.
Expand All @@ -211,35 +215,39 @@ DAC和MAC不是互斥的, DAC是最基本的安全模型, 是我们最常用到

### DAC安全模型

#### 用户管理

DAC安全模型的核心内容是: 进程理论上所拥有的权限和执行它的用户的权限相同.

#### 用户、组、口令信息
##### 用户、组、口令信息

通过`/etc/passwd``/etc/group`保存用户和组信息, 通过`/etc/shadow`保存密码口令及其变动信息, 每行一条记录.

用户和组分别用UID和GID表示, 一个用户可以同时属于多个组, 默认每个用户必须属于一个与之UID同值的GID.

##### `/etc/passwd`
###### `/etc/passwd`

|0|1|2|3|4|5|6|
|-|-|-|-|-|-|-|
|用户名|口令|UID|GID|注释|用户目录|默认shell|

##### `/etc/group`
###### `/etc/group`

|0|1|2|3|
|-|-|-|-|
|组名|口令|GID|组成员用户列表|

##### `/etc/shadow`
###### `/etc/shadow`

|0|1|2|3|4|5|
|-|-|-|-|-|-|
|登录名|最后一次修改时间|最小时间间隔|最大时间间隔|警告时间|不活动时间|

#### 文件权限控制(传统)
#### 文件管理

##### 传统

##### 文件类型
###### 文件类型

- 普通文件(`-`), 包括文本文件和二进制文件, 可以用`touch`创建
- 目录文件(`d`)
Expand All @@ -248,7 +256,7 @@ DAC安全模型的核心内容是: 进程理论上所拥有的权限和执行它
- 字符文件(`c`)和块文件(`b`), 均为设备文件, 可以用`mknod`创建
- 链接文件(`l`), 是软链接文件, 而不是硬连接文件

##### 访问权限控制组 {#访问权限控制组}
###### 访问权限控制组 {#访问权限控制组}

分为三组进行控制: user包含对文件属主设定的权限, group包含对文件属组设定的权限, others包含对其他者设定的权限. 可设定的权限为:

Expand Down Expand Up @@ -297,9 +305,9 @@ DAC安全模型的核心内容是: 进程理论上所拥有的权限和执行它
- 其他用户权限: `r-t` = 5
所以可以表示为7775

#### 文件权限控制(ACL)
##### ACL

##### ACL是什么
###### ACL是什么

访问控制列表(Access Control List, ACL)是由一条或者多条规则组成的集合, 它在各种系统和应用中都有广泛的应用, 通过灵活使用ACL, 可以实现细粒度的访问控制, 比如说:

Expand All @@ -311,12 +319,12 @@ DAC安全模型的核心内容是: 进程理论上所拥有的权限和执行它
6. VCS: 用于控制用户对代码库的访问权限
7. ...

##### 为什么需要ACL
###### 为什么需要ACL

1. 更细粒度的控制: 可以为不同的用户和组设置不同的权限
2. 继承: 目录的ACL可以配置为自动应用到新创建的文件和子目录

##### 掩码 {#掩码}
###### 掩码 {#掩码}

掩码(mask)在ACL中是一个重要的概念, 用于设置文件或者目录的最大权限.

Expand All @@ -335,7 +343,7 @@ DAC安全模型的核心内容是: 进程理论上所拥有的权限和执行它

当使用`setfacl`命令添加第一个条目后, 掩码默认会自动创建, 默认最大权限为`rwx`.

##### 默认条目 {#默认条目}
###### 默认条目 {#默认条目}

默认条目定义了对新创建的文件或者子目录应用的默认ACL权限. 这只能作用于文件夹. 默认条目里面也有默认用户条目, 默认组条目, 默认掩码, 默认其他权限. 默认条目的存在可以确保新创建的文件或者子目录继承了所在目录的权限规则, 从而确保了一致性和安全性.

Expand Down

0 comments on commit c38ef7e

Please sign in to comment.