DC's blog DC's blog
首页
  • 计算机基础
  • linux基础
  • mysql
  • git
  • 数据结构与算法
  • axure
  • english
  • docker
  • opp
  • oop
  • 网络并发编程
  • 不基础的py基础
  • 设计模式
  • html
  • css
  • javascript
  • jquery
  • UI
  • 第一次学vue
  • 第二次学vue
  • Django
  • drf
  • drf_re
  • 温故知新
  • flask
  • 前后端不分离

    • BBS
    • 订单系统
    • CRM
  • 前后端部分分离

    • pear-admin-flask
    • pear-admin-django
  • 前后端分离

    • 供应链系统
  • 理论基础
  • py数据分析包
  • 机器学习
  • 深度学习
  • 华中科大的网课
  • cursor
  • deepseek
  • 杂文
  • 罗老师语录
  • 关于我

    • me
  • 分类
  • 归档
GitHub (opens new window)

DC

愿我一生欢喜,不为世俗所及.
首页
  • 计算机基础
  • linux基础
  • mysql
  • git
  • 数据结构与算法
  • axure
  • english
  • docker
  • opp
  • oop
  • 网络并发编程
  • 不基础的py基础
  • 设计模式
  • html
  • css
  • javascript
  • jquery
  • UI
  • 第一次学vue
  • 第二次学vue
  • Django
  • drf
  • drf_re
  • 温故知新
  • flask
  • 前后端不分离

    • BBS
    • 订单系统
    • CRM
  • 前后端部分分离

    • pear-admin-flask
    • pear-admin-django
  • 前后端分离

    • 供应链系统
  • 理论基础
  • py数据分析包
  • 机器学习
  • 深度学习
  • 华中科大的网课
  • cursor
  • deepseek
  • 杂文
  • 罗老师语录
  • 关于我

    • me
  • 分类
  • 归档
GitHub (opens new window)
  • 计算机基础

  • linux基础

    • 准备工作
    • 初识shell与基础常用命令
    • 文件管理之基础命令
    • 文件管理之四大模式
    • 文件管理之命令补充
    • 文件管理之文件系统
    • 权限管理之用户与组
    • 权限管理之文件权限
    • 权限管理之ACL
      • ACL引入
      • ACL查改删继承
      • 文件的a、i、A特殊属性
    • 权限管理之su与sudo
    • 软件包管理之rpm
    • 软件包管理之yum
    • 查看进程
    • 管理进程
    • 存储管理之传统磁盘管理
    • 存储管理之LVM
    • 网络管理
    • shell基础
    • crond计划任务
    • 系统优化
  • mysql

  • git

  • 数据结构与算法

  • axure

  • english

  • docker

  • IT_Need
  • linux基础
DC
2022-10-08
目录

权限管理之ACL

# ACL引入

UGO中的O即其他人, 涵盖了非常大的范围, 我们使用 setfacl 可以将用户对文件的权限进行进一步细化!

数据准备

## -- 在/opt目录下创建文件a.txt
[root@localhost opt]# echo 111 > a.txt
[root@localhost opt]# chmod o=- a.txt

## -- 不管是哪个用户,在操作a.txt文件之前,需要保证沿途目录/与/opt的其他人有x执行权限
[root@localhost opt]# ll -d /
dr-xr-xr-x. 17 root root 244 8月   1 13:50 /
[root@localhost opt]# ll -d /opt
drwxr-xr-x. 2 root root 19 8月   4 18:48 /opt
[root@localhost opt]# ll a.txt 
-rw-r----- 1 root root 4 8月   4 18:48 a.txt

## -- 查看未设置ACL时文件的权限状态
[root@localhost opt]# getfacl a.txt
# file: a.txt
# owner: root
# group: root
user::rw-
group::r--
other::---

[root@localhost opt]# useradd egon01
[root@localhost opt]# useradd egon02
[root@localhost opt]# groupadd IT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

实验目的:
让用户egon01对a.txt文件只有读权限; egon02对a.txt文件只有写权限; IT组对a.txt文件只有读权限.

[root@localhost opt]# setfacl -m u:egon01:r a.txt
[root@localhost opt]# setfacl -m u:egon02:w a.txt
[root@localhost opt]# setfacl -m g:IT:r /opt/a.txt 

"""
文件一旦设置了acl权限后, ls查看文件的信息会出现一个 加号!
"""
[root@localhost opt]# ll a.txt
-rw-rw----+ 1 root root 12 8月   8 01:35 a.txt
"""
查看文件ACL状态,与未设置ACL时相比:
  1> 多了对用户egon01和egon02以及IT组对a.txt权限的设置
  2> 仔细观察信息中出现了mask关键字,具体说明如下:
        mask代表文件的最高权限(除了owner和other都要受其影响)..
        本质原理是将权限与mask值进行按位与运算
        通俗点,mask像是一个筛子.文件属主和其他人之外的所有权限都需要被它筛一遍..
        若mask是rw,则代表该筛子只放行r和w权限..
        举个栗子:
            lili权限	r--
            mask权限	rw-
            lili最终权限	r--
Ps:我们一般不更改mask值.
   只要赋予mask最大权限(也就是rwx),则给用户或群组设定的ACL权限本身就是有效的..怎么筛都能通过.
"""
[root@localhost opt]# getfacl a.txt 
# file: a.txt
# owner: root
# group: root
user::rw-
user:egon01:r--
user:egon02:-w-
group::r--
group:IT:r--
mask::rw-
other::---

## -- 进行验证
[root@localhost opt]# su - egon01 -c "cat /opt/a.txt" 
111
[root@localhost opt]# su - egon01 -c "echo 222 >> /opt/a.txt" 
-bash: /opt/a.txt: 权限不够

[root@localhost opt]# su - egon02 -c "echo 222 >> /opt/a.txt" 
[root@localhost opt]# su - egon02 -c "cat /opt/a.txt" 
cat: /opt/a.txt: 权限不够

[root@localhost opt]# cat a.txt
111
111
222
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

# ACL查改删继承

查看文件的权限     getacl a.txt

修改文件u属主的权限     setfacl -m u::权限 a.txt
修改文件g属组的权限     setfacl -m g::权限 a.txt
修改文件o其他人的权限     setfacl -m o::权限 a.txt
修改文件具体某一个 用户 的权限 setfacl -m u:用户名:权限 a.txt
修改文件具体某一个 组 的权限 setfacl -m g:组名:权限 a.txt 组必须事先存在 

删除文件具体某一个用户的权限      setfacl -x u:用户名 a.txt
删除文件具体某一个组的权限      setfacl -x g:组名 a.txt
删除文件所有ACL权限      setfacl -b a.txt 文件权限的+号也就消失啦

更改文件mask的值      setfacl -m m:权限 a.txt 一般不会更改mask权限的值 

让具体某一个用户对该目录以及往后在该目录下 新建 的文件和目录都拥有相同的权限
setfacl -m d:u:用户名:权限 /opt/test
注意: 若继承的权限设置为rwx,该目录下新建文件默认的mask值可能会对文件最终生效的权限产生影响..

对目录ACL权限的设置同理..

使用ACL后,修改权限就不要再用chmod啦!!以免产生不必要的麻烦..

[root@localhost opt]# getfacl a.txt 
# file: a.txt
# owner: root
# group: root
user::rw-
user:egon01:r--
user:egon02:-w-
group::r--
group:IT:r--
mask::rw-
other::---

"""
改变属组权限的正确做法: `setfacl -m g::- a.txt`
"""
[root@localhost opt]# chmod g=- /opt/a.txt 

"""
使用ACL后,再使用chmod修改权限生成的新的mask值,会将权限筛选一遍,达不到我们想要的效果..
可以看到,mask::--- 	user:egon01:r--  r过不了.	所以用户egon01生效的权限是---
"""
[root@localhost opt]# getfacl a.txt 
# file: a.txt
# owner: root
# group: root
user::rw-
user:egon01:r--	    #effective:---
user:egon02:-w-	    #effective:---
group::r--          #effective:---
group:IT:r--        #effective:---
mask::---
other::---
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

当前用户如果检索不到对应的acl权限或者检索到后发现权限为空,都会对应到other权限上..
也就是说,当前用户属于文件权限other其他人那一栏,当前用户对此文件生效的acl权限是高于other权限的..

setfacl -b b.txt  # 可以先清理掉所有的acl权限,保证实验环境干净

● 应用场景一: 其他人对文件没有任何权限,然后单独设置其他人里的egon01对文件有r权限、egon02对文件有w权限
"""
egon01对b.txt的权限为r--; egon02对b.txt的权限为-w-
剩余的其他人中,例如egon03对b.txt的权限为---
"""
      setfacl -m o::- b.txt
      setfacl -m u:egon01:r b.txt
      setfacl -m u:egon02:w b.txt


● 应用场景二: 其他人对文件有rw权限,然后单独设置其他人里的egon01对文件有r权限、egon02对文件有w权限
"""
egon01对b.txt的权限为r--; egon02对b.txt的权限为-w-
剩余的其他人中,例如egon03对b.txt的权限为rw-
"""
      setfacl -m o::rw b.txt
      setfacl -m u:egon01:r b.txt
      setfacl -m u:egon02:w b.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 文件的a、i、A特殊属性

"""
lsattr 查看文件的特殊属性
"""
[root@localhost opt]# touch /opt/{1..3}.txt
[root@localhost opt]# ll /opt/
总用量 0
-rw-r--r-- 1 root root 0 8月   8 06:19 1.txt
-rw-r--r-- 1 root root 0 8月   8 06:19 2.txt
-rw-r--r-- 1 root root 0 8月   8 06:19 3.txt
[root@localhost opt]# lsattr /opt/
---------------- /opt/1.txt
---------------- /opt/2.txt
---------------- /opt/3.txt

"""
chattr 设置文件的特殊属性
  +a  让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件.
  +i	禁止任何修改,有些病毒程序会对文件加上该权限;防止系统中某个关键文件被修改 TnT
  +A	不能更改文件访问时间
	
  -a -i	-A 删除属性

Ps: 这些文件属性设置对root管理员也生效,但root可以更改这些特殊属性啊!!
"""
[root@localhost opt]# chattr +a /opt/1.txt
[root@localhost opt]# chattr +i /opt/2.txt
[root@localhost opt]# chattr +A /opt/3.txt
[root@localhost opt]# lsattr /opt/
-----a---------- /opt/1.txt
----i----------- /opt/2.txt
-------A-------- /opt/3.txt
[root@localhost opt]# ll /opt/
总用量 0
-rw-r--r-- 1 root root 0 8月   8 06:19 1.txt
-rw-r--r-- 1 root root 0 8月   8 06:19 2.txt
-rw-r--r-- 1 root root 0 8月   8 06:19 3.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

权限管理之文件权限
权限管理之su与sudo

← 权限管理之文件权限 权限管理之su与sudo→

最近更新
01
deepseek本地部署+知识库
02-17
02
实操-微信小程序
02-14
03
教学-cursor深度探讨
02-13
更多文章>
Theme by Vdoing | Copyright © 2023-2025 DC | One Piece
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式