RHCE9学习指南 第10章 ACL权限

news2025/2/5 10:37:18

10.1 ACL介绍及基本用法

前面讲权限时是对u、u、o来设置权限的。假如有如图10-1所示的需求。
file
图10-1 为三个用户设置权限
有一个目录aa,要求tom、bob、mary具有不同的权限,利用前面讲过的知识是完全可以实现的。
所有者设置为tom,把所有者权限设置为rw。
所属组设置为bob,把所属组权限设置为r。
mary使用o的权限,把o权限设置为rx。
但是如果有4个或更多个用户,要求不同的权限如图10-2所示。
file
图10-2 为四个用户设置权限
按照前面讲的知识点就没法实现了,要实现对具体用户设置权限,我们可以考虑ACL。
ACL的用法如下所示。

setfacl  -m  u:用户名:rw-   file/dir   --对用户设置ACL
setfacl  -m  g:组名:rw-   file/dir     --对组设置ACL

在/opt下创建一个文件/opt/aa.txt文件,命令如下。

[root@server ~]# cd /opt/
[root@server opt]# touch aa.txt
[root@server opt]# ls -l aa.txt
-rw-r--r--. 1 root root 0 810 13:09 aa.txt
[root@server opt]#

对于lduan用户来说,只能使用o权限,所以lduan是不能往此aa.txt中写内容,打开一个新标签使用lduan登录,然后在aa.txt中测试写。

[lduan@server ~]$ echo aaa > /opt/aa.txt
-bash: /opt/aa.txt: 权限不够
[lduan@server ~]$

此时是写不进去的。使用root用户对aa.txt设置ACL权限,首先查看aa.txt是否具有ACL权限,查看的命令为getfacl如下所示。

[root@server opt]# getfacl aa.txt
# file: aa.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
[root@server opt]#

结果中如果不想显示前面几行带有#的,可以加上-c选项,命令如下所示。

[root@server opt]# getfacl -c aa.txt
user::rw-
group::r--
other::r--

[root@server opt]#

设置aa.txt的acl权限,使得用户lduan对aa.txt只具有写权限没有r权限。

[root@server opt]# setfacl -m u:lduan:-w- aa.txt
[root@server opt]#

查看aa.txt的ACL权限,命令如下所示。

[root@server opt]# getfacl -c aa.txt
user::rw-
user:lduan:-w-
group::r--
mask::rw-
other::r--

[root@server opt]#

使用lduan用户进行测试,命令如下所示。

[lduan@server ~]$ echo aaa > /opt/aa.txt
[lduan@server ~]$ cat /opt/aa.txt
cat: /opt/aa.txt: 权限不够
[lduan@server ~]$

可以看到,lduan用户对/opt/aa.txt具备写权限,但是没有读权限。
为aa.txt设置ACL权限,让lduan用户能写,命令如下所示。

[root@server opt]# setfacl -m u:lduan:rw- aa.txt
[root@server opt]#

可以看到,lduan对aa.txt具有rw权限了,然后使用lduan用户往aa.txt中写数据,如下所示。

[lduan@server ~]$ echo aaa > /opt/aa.txt
[lduan@server ~]$ cat /opt/aa.txt
aaa
[lduan@server ~]$

已经成功的写进去了,也能看到文件中的内容。
如果对组设置ACL权限,如设置aa.txt的ACL权限,让tom组的用户能写,命令如下所示。

[root@server opt]# setfacl -m g:tom:rw- aa.txt
[root@server opt]#

此后凡是tom组的用户对aa.txt都具有rw权限。
注意:(1)假设一个用户bob已经登录系统但是不属于tom组,然后把bob加入tom组后,bob需要退出重新登录才能使用权限。
(2)如果对一个不存在的用户或组设置ACL权限,会有“无效的参数”报错。

[root@server opt]# setfacl -m u:tomxx:rw- aa.txt
setfacl: Option -m: 无效的参数 near character 3
[root@server opt]#

10.2 ACL的mask权限

先查看aa.txt的ACL权限,然后介绍5个名词。

[root@server opt]# getfacl -c aa.txt  #这里-c可以去除前几行的注释行
user::rw-               ## ACL_USER_OBJ 
user:lduan:rw-          ## ACL_USER
group::r--				## ACL_GROUP_OBJ
group:tom:rw-			## ACL_GROUP
mask::rw-			    ## ACL_MASK
other::r--

[root@server opt]#

(1)ACL_USER_OBJ:文件的所有者。
(2)ACL_USER:通过acl授权的用户。
(3)ACL_GROUP_OBJ:文件所属组。
(4)ACL_GROUP:通过acl授权的组。
(5)ACL_MASK:ACL_USER, ACL_GROUP_OBJ和ACL_GROUP中的最大权限。
如果没有手动的配置ACL_MASK的权限,则ACL_MASK的权限会随着ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的变化而变化,始终是这几个权限的最大值。
假设将tom组(ACL_GROUP)的权限改成r–,命令如下所示。

[root@server opt]# setfacl -m g:tom:r-- aa.txt
[root@server opt]# getfacl -c aa.txt
user::rw-
user:lduan:rw-
group::r--
group:tom:r--
mask::rw-
other::r--

[root@server opt]#

这里因为ACL_USER(lduan用户)的权限是rw,是这几者中最高的,所以ACL_MASK的权限并没改变。现在将lduan的ACL权限改成—,命令如下所示。

[root@server opt]# setfacl -m u:lduan:--- aa.txt
[root@server opt]# getfacl -c aa.txt
user::rw-
user:lduan:---
group::r--
group:tom:r--
mask::r--
other::r--

[root@server opt]#

因为这几者中,最高权限为r,所以ACL_MASK的权限是r。
如果将lduan的acl权限设置为rwx,如下所示。

[root@server opt]# setfacl -m u:lduan:rwx aa.txt
[root@server opt]# getfacl -c aa.txt
user::rw-
user:lduan:rwx
group::r--
group:tom:r--
mask::rwx
other::r--

[root@server opt]#

lduan的acl权限现在是最高的,所以mask也跟着变成了rwx。
当然,我们也可以手动设置ACL_MASK的权限,语法如下所示。

setfacl  -m  m::rw-   file/dir   

下面手动将aa.txt的mask权限设置为r–。

[root@server opt]# setfacl -m m:r-- aa.txt
[root@server opt]# getfacl -c aa.txt
user::rw-
user:lduan:rwx			#effective:r--
group::r--
group:tom:r--
mask::r--
other::r--

[root@server opt]#

刚才讲mask设置的是ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大权限,所以即使lduan用户的权限有rwx,但是生效的只有r权限,上面结果中#effective:r–显示的,因为最大权限被限定在r了。
如果将mask的权限设置为—呢?

[root@server opt]# getfacl -c aa.txt
user::rw-
user:lduan:rwx			#effective:---
group::r--			#effective:---
group:tom:r--			#effective:---
mask::---
other::r--

[root@server opt]#

因为mask是最高权限,所以上面显示的ACL_USER, ACL_GROUP_OBJ和ACL_GROUP实际能使用的的权限均为—。下面测试lduan用户是否能读和写aa.txt的内容,如下所示。

[lduan@server ~]$ cat /opt/aa.txt 
aaa
[lduan@server ~]$ echo bbb > /opt/aa.txt
-bash: /opt/aa.txt: 权限不够
[lduan@server ~]$ 

可以看到,可以读但是不能写,但这个和mask的权限—相悖啊,因为这里又涉及了other的权限,前面可以看到o的权限为r,所以lduan是可以读但是不可以写的。
如果给o设置一个写权限,命令如下所示。

[root@server opt]# chmod o+w aa.txt
[root@server opt]# 

则lduan用户可以往aa.txt中写内容。

[lduan@server ~]$ cat /opt/aa.txt 
aaa
[lduan@server ~]$ echo bbb > /opt/aa.txt
[lduan@server ~]$ 

把mask权限设置为r–。

[root@server opt]# setfacl -m m:r-- aa.txt
[root@server opt]# getfacl -c aa.txt
user::rw-
user:lduan:rwx			#effective:r--
group::r--
group:tom:r--
mask::r--
other::rw-

[root@server opt]#

这里other的权限是rw,然后lduan进行测试。

[lduan@server ~]$ cat /opt/aa.txt 
bbb
[lduan@server ~]$ echo bbb > /opt/aa.txt
-bash: /opt/aa.txt: 权限不够
[lduan@server ~]$

可以看到,此时lduan用户能读但是不能写。
结论:
(1)如果没有手动设置acl的mask权限,则对用户/组设置的acl权限生效,不用考虑o的权限。
(2)如果手动设置了mask的权限,且mask权限被设置为了—,则other权限生效。如果手动设置mask的权限只要不是—,则不考虑other权限。
重新给任一用户设置acl权限,则自动取消手动设置的mask权限。
要取消ACL,语法如下所示。

setfacl  -x u:用户名  file/dir

或者

setfacl  -x u:用户名  file/dir

要取消用户tom和lduan的acl,及取消tom的acl权限,命令如下所示。

[root@server opt]# setfacl -x u:lduan aa.txt
[root@server opt]# setfacl -x u:tom aa.txt
[root@server opt]# setfacl -x g:tom aa.txt
[root@server opt]#

上面练习的都是对文件设置acl权限,对目录设置acl权限是一样的,请大家自行练习。

10.3 设置默认权限

当我们对目录设置ACL时,还可以设置默认ACL权限,语法如下。
setfacl -m d:u:user1:rwx dir
不管谁在目录dir中 新建的目录或文件,对user1 会自动设置acl权限rwx。
注意:这里的默认权限是对dir中新建的目录或文件,并非对dir本身设置权限。
这里语法中的d的意思是默认的意思,为了好解释我们看如下的例子。
创建目录/opt/xx,为了下面测试方便,可以设置ACL权限,让tom具有rwx权限,命令如下所示。

[root@server opt]# mkdir xx
[root@server opt]# setfacl -m u:tom:rwx xx
[root@server opt]# getfacl -c xx
user::rwx
user:tom:rwx
group::r-x
mask::rwx
other::r-x

[root@server opt]#

现在设置lduan对目录xx的默认ACL权限为rwx,命令如下所示。

[root@server opt]# setfacl -m d:u:lduan:rwx xx
[root@server opt]# getfacl -c xx
	...输出...
default:user::rwx
default:user:lduan:rwx
default:group::r-x
	...输出...
[root@server opt]#

不管任何人在xx目录中新创建的文件或目录,对lduan都会有默认的rwx。
测试:使用tom用户在/opt/xx下创建一个文件aa.txt,然后查看此文件的acl权限,命令如下所示。

[tom@server ~]$ touch /opt/xx/aa.txt
[tom@server ~]$ getfacl -c /opt/xx/aa.txt
getfacl: Removing leading '/' from absolute path names
user::rw-
user:lduan:rwx		#effective:rw-
group::r-x			#effective:r--
mask::rw-
other::r--

[tom@server ~]$ 

可以看到,lduan对/opt/xx/aa.txt具有默认acl权限rwx。因为除了后期修改权限,创建文件时不会出现x权限,所以这里出现了#effective:rw-。
然后lduan用户往/opt/xx中写如内容。

[lduan@server ~]$ touch /opt/xx/bb.txt
touch: 无法创建 '/opt/xx/bb.txt': 权限不够
[lduan@server ~]$

会发现权限不够,写不进去,说明了默认权限是对/opt/xx中新建的目录或文件,并非对/opt/xx本身设置权限。
取消默认权限的命令如下所示。

[root@server opt]# setfacl -x d:u:lduan xx
[root@server opt]#

取消默认权限之后,以后在/opt/xx中新建的文件对lduan用户不会有默认acl权限,但是已经存在的文件的默认权限 也不会取消。
清空/opt中的内容,命令如下所示。

[root@server opt]# rm -rf *
[root@server opt]# cd
[root@server ~]#

作业

1.创建一个目录/testdir,要求tom用户对此目录具备rwx权限,bob具备r–权限,mary具备rw-权限(相关用户如果不存在则自行创建即可)。

2.创建目录/testdir2,要求tom组的用户对此目录具备rwx权限,然后把bob用户加入tom组,测试bob对/testdir2目录是否具备rwx权限。

3.创建目录/testdir3,要求在此目录中新建的文件或目录,对tom都具备rw-权限。这个需求仅仅针对/testdir3中新建的文件或目录,并不包括/testdir3目录本身。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1337089.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

维修服务企业网站建设的作用是什么

市场对维修服务的需求很大,但同样市场中相关的维修服务公司也不少,尤其当线下用户难获取时,各大企业都想要通过线上实现品牌曝光、拓客及展示内容服务等,行业竞争激烈,而线上入驻第三方平台,不仅处处受限&a…

破局:疯狂2+1商业模式玩法,顺联动力新零售百亿架构模型

破局:疯狂21商业模式玩法,顺联动力新零售百亿架构模型 大家好!我是微三云营销总监胡佳东,私域电商模式策划师! 引言:2023年是重新拥抱世界的一年,现在大多数的年轻人,不在被传统的…

精品Nodejs实现的微信小程序的运动减肥管理系统设计与实现菜谱美食健康

《[含文档PPT源码等]精品Nodejs实现的微信小程序的运动减肥管理系统设计与实现[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功! 软件开发环境及开发工具: 操作系统:Windows 10、Windows …

【网络安全 | 网络协议】结合Wireshark讲解HTTP协议

前言 超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。 文章目录 前言HTTP协议Wireshark抓包分析 HTTP协议在Wireshark数据包中是…

[沫忘录] Docker容器

[沫忘录] Docker容器 启动和校验 #启动Docker systemctl start docker#停止Docker systemctl stop docker#重启Docker systemctl restart docker service docker restart#使Docker开机自启 systemctl enable docker#执行docker ps命令,可以用来检验安装启动成功 d…

Windows基于Mingw编译安装FLTK

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、FLTK是什么?二、下载源代码三、准备编译环境四、导入项目到Clion五、修改Cmake配置1.src/CMakeLists.txt2.Cmake/options.cmake3.CMakeLists.tx…

Isaac Sim 仿真机器人urdf文件导入

本教程展示如何在 Omniverse Isaac Sim 中导入 urdf 一. 使用内置插件导入urdf 安装urdf 插件 方法是转到“window”->“Extensions” 搜索框中输入urdf, 并启用 通过转至Isaac Utils -> Workflows -> URDF Importer菜单来访问 urdf 扩展。 表格中的 1,2,3 对应着…

【六】【C语言\动态规划】买卖股票的最佳时机含手续费、买卖股票的最佳时机 III、买卖股票的最佳时机 IV,三道题目深度解析

动态规划 动态规划就像是解决问题的一种策略,它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题,并将每个小问题的解保存起来。这样,当我们需要解决原始问题的时候,我们就可以直接利…

毕设之-消息系统设计(websocket+netty)

文章目录 前言技术选型基本架构 前言 long time no see。 前几天去一家小公司待了待,果断还是选择跑路,第三天就去另一家公司考察环境,和主管聊了两个多小时,非常愉快,就是单位薪资砍了一半。哎,旧事莫提了…

正定矩阵与半正定矩阵 、奇异矩阵

一、正定矩阵与半正定矩阵 请问谁能用易于理解的语言解释下矩阵的正定及半正定? - 知乎 M为一个方阵 定义: 一个非零向量X,如果,那么我们就规定这个M方阵为正定矩阵 单位矩阵是正定矩阵 (positive definite) 同理: 那么这个M…

【Java进阶篇】Java中的枚举的概念、有什么特点和好处

✔️Java枚举的概念、特点和好处 ✔️枚举的概念✔️枚举的特点✔️枚举的好处✔️拓展知识仓✔️枚举如何实现的? ✔️枚举的概念 Java枚举是一种特殊的数据类型,它的每一个值都映射到Enum类的构造函数中,具有固定数量的常量值。枚举类型具有…

台球杆,预计到2026年将达到 6.234 亿美元

台球杆市场多年来一直在稳步增长,这得益于台球作为一种全球娱乐活动的日益普及。2021 年全球台球杆市场价值 5.477 亿美元,预计到 2026 年将达到 6.234 亿美元,预测期内复合年增长率为 2.6%。 就中国市场而言,中国是全球最大的台球…

鹅目标检测数据集VOC格式350张

鹅是一种大型的水禽,常见于湖泊、河流和农田周围。它们的体形庞大,长有长颈和宽阔的翅膀,通常呈灰白色或棕褐色。鹅的头部呈黑色,嘴呈橙色,眼睛则是明亮的蓝色。 鹅是非常社交的动物,常以大群的形式生活在…

YOLOv5改进 | 主干篇 | ShuffleNetV1轻量化网络助力FPS提高(附代码+修改教程)

一、本文内容 本文给大家带来的改进内容是ShuffleNetV1,这是一种为移动设备设计的高效CNN架构。它通过使用点群卷积和通道混洗等操作,减少了计算成本,同时保持了准确性,通过这些技术,ShuffleNet在降低计算复杂度的同时…

C/S医院检验LIS系统源码

一、检验科LIS系统概述: LIS系统即实验室信息管理系统。LIS系统能实现临床检验信息化,检验科信息管理自动化。其主要功能是将检验科的实验仪器传出的检验数据经数据分析后,自动生成打印报告,通过网络存储在数据库中&#xff…

Modbus TCP转Profinet协议网关应用

YC-TCP-PN通讯网关:引领工业通讯新篇章 在工业4.0的浪潮下,高效、稳定的通讯技术成为各行业的核心竞争力。作为行业领军者,我们自豪地推出YC-TCP-PN通讯网关,以其卓越性能打破行业技术壁垒,引领工业通讯进入新篇章。 …

使用 Python 和 PyQt 实现路由算法模拟器

项目地址 GitHub - 944613709/Shortest-Path-Simulation: 网络拓扑图最短路径模拟 引言 在现代网络技术中,路由算法扮演着至关重要的角色。它们决定了数据包在网络中的传输路径,从而影响整个网络的效率和性能。为了更好地理解这些算法的工作原理&…

UG模型的显示与隐藏

在UG中,除了通过图层的方式控制模型的显示与隐藏外,还可以直接通过显示与隐藏命令,位置在菜单-编辑-显示与隐藏,需要注意的是这些命令只能对可视图层中的模型进行控制 显示与隐藏:ctrl w 可以通过模型的类别&#xf…

2014年第三届数学建模国际赛小美赛B题全地形伪装解题全过程文档及程序

2014年第三届数学建模国际赛小美赛 B题 全地形伪装 原题再现: 破坏性着色在军事用途中很常见,用于军用车辆、士兵制服和装备。视觉是人类的主要方向感,伪装的主要功能是欺骗人眼。军事服装中存在大量的伪装图案,以适应作战服装与…