RHCE9学习指南 第10章 ACL权限

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目录本身。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

目标追踪:使用ByteTrack进行目标检测和跟踪

BYTE算法是一种简单而有效的关联方法,通过关联几乎每个检测框而不仅仅是高分的检测框来跟踪对象。这篇博客的目标是介绍ByteTrack以及多目标跟踪(MOT)的技术。我们还将介绍在样本视频上使用ByteTrack跟踪运行YOLOv8目标检测。 多目标跟踪&…

【Python微信机器人】第六七篇: 封装32位和64位Python hook框架实战打印微信日志

目录修整 目前的系列目录(后面会根据实际情况变动): 在windows11上编译python将python注入到其他进程并运行注入Python并使用ctypes主动调用进程内的函数和读取内存结构体调用汇编引擎实战发送文本和图片消息(支持32位和64位微信)允许Python加载运行py脚本且支持热加载利用汇…

什么是数据可视化?数据可视化的流程与步骤

前言 数据可视化将大大小小的数据集转化为更容易被人脑理解和处理的视觉效果。可视化在我们的日常生活中非常普遍,但它们通常以众所周知的图表和图形的形式出现。正确的数据可视化以有意义和直观的方式为复杂的数据集提供关键的见解。 数据可视化定义 数据可视化…

「仙逆」王林夺舍身份曝光,火焚国火兽危机,两位始祖保护王林

Hello,小伙伴们,我是拾荒君。 《仙逆》第16集超前爆料,本次猛料,王林的天逆珠吞噬了火兽之王,使他的火属性达到了大圆满的境界。在封印屏障的保护下,他成功地逃脱了火兽的追击。然而,如今火兽数量众多&…

【视觉实践】使用Mediapipe进行手势识别

目录 1 Mediapipe 2 Solutions 3 安装依赖库 4 实践 1 Mediapipe Mediapipe是google的一个开源项目,可以提供开源的、跨平台的常用机器学习(machine learning,ML)方案。MediaPipe是一个用于构建机器学习管道的框架,用于处理视频、音频等时间序列数据。与资源消耗型的机…

易天新引进DELL Z9432F-ON交换机设备,网络通信再迎新风采

随着信息技术的飞速发展,网络通信已经成为现代社会中不可或缺的一部分。在这个数字化时代,企业对于高效、可靠的网络设备需求日益增加。为了满足企业日益增长的网络需求和为客户提供更好的服务,易天引进了DELL Z9432F-ON交换机设备&#xff0…

系统管理在工业物联网中的应用——青创智通工业物联网

工业物联网系统是一个复杂的大规模系统,涉及到众多的设备和系统,因此其管理面临诸多挑战。首先,设备和系统的多样性使得互通性成为一个难题,不同厂商的设备和系统之间的兼容性难以保证。其次,工业物联网系统的数据量庞…

Java开发框架和中间件面试题(5)

44.Tomcat一个请求的处理流程? 假设来自客户的请求为: http://localhost:8080/test/index.jsp请求被发送到本机端口8080,被在那里侦听Copote HTTP/1.1 Connector,然后 1.Connector把该请求交给它所在的Service的Engi…

Antd Cascader 组件指定 placement 弹出位置无效

最近在使用 Antd Cascader 组件时&#xff0c;发现指定 placement 弹出位置无效&#xff0c;查看官方文档也没有找到相关的说明&#xff0c;经过一番搜索&#xff0c;终于发现了问题所在。 问题复现 代码示例&#xff1a; <Form.Item name"intention" label&quo…

7_js_dom编程入门1

Objective&#xff08;本课目标&#xff09; 掌握获取页面元素的常用方法 掌握事件触发案例 能够区分innerText和innerHTML的区别 综合案例训练 1 DOM 介绍 1.1 什么是DOM 文档对象模型&#xff08;Document Object Model&#xff0c;简称DOM&#xff09;&#xff0c;是 …

分享3种常用的前端埋点方式

只有了解用户&#xff0c;我们才能服务好用户&#xff0c;而最接近用户的我们&#xff0c;自然要承担起更多的责任。 那么在一个企业中&#xff0c;我们要如何去了解用户呢&#xff1f; 最直接有效的方式就是了解用户的行为&#xff0c;了解用户在网站中做了什么&#xff0c;呆…

工业交换机的冗余电源设计

在市场上&#xff0c;尤其是在工业级交换机上&#xff0c;我们经常能看到一个支持冗余电源的选项。在大多数工业现场中&#xff0c;我们都知道网络的稳定性是非常关键的。而且&#xff0c;像光伏和煤矿这样的行业经常位于偏远地区&#xff0c;环境条件恶劣。因此&#xff0c;在…

WAVE SUMMIT+ 2023倒计时2天,传文心一言将曝最新进展!

传文心一言将曝最新进展&#xff01; 亮点一&#xff1a;趋势引领&#xff0c;“扛把子”文心一言将曝新进展亮点二&#xff1a;干货十足&#xff0c;硬核低门槛开发秘籍大放送亮点三&#xff1a;蓄势待发&#xff0c;大模型赋能产业正当时亮点四&#xff1a;群星闪耀&#xff…

FPFA.一种二倍频电路代码描述以及测量详情

一、前言 1、因为需要倍频电路所以找了个二倍频的电路&#xff0c;通过fpga实际测量发现经过倍频后的电路峰值降低。不过这个也正常&#xff0c;因为该电路只要过触发点就会开始发生波形变化&#xff0c;而电路的触发值不是峰值。​​​​​​​ 2、继续对电路做倍频后信号做二…

西南科技大学计算机网络实验三 (路由器基本配置与操作,RIP、OSPF路由协议配置)

一、实验目的 基于网络设备模拟软件,学习和使用路由器的各种基本配置与验证命令,学习和使用路由器的静态路由、RIP、OSPF路由协议配置。 二、实验环境 使用RouterSim Network Visualizer软件来模拟网络设备与网络环境;主机操作系统为windows。 三、实验内容 1、路由器名称…

[足式机器人]Part4 南科大高等机器人控制课 CH11 Bascis of Optimization

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;CLEAR_LAB 笔者带更新-运动学 课程主讲教师&#xff1a; Prof. Wei Zhang 课程链接 &#xff1a; https://www.wzhanglab.site/teaching/mee-5114-advanced-control-for-robotics/ 南科大高等机器人控制课 Ch11 Bascis o…

android jetpack组件一篇搞定

Jetpack 是 Android 官方推出的一套开发库&#xff0c;其中包含众多的组件&#xff0c;可以让 Android 开发者更快更高效地开发应用程序。Jetpack 组件分为四大部分&#xff1a;架构、行为、UI 和基础组件。 下面详细阐述如何合理使用 Jetpack 组件开发 Android 项目。 1. 熟练…

时尚机密防线升级:迅软DSE助力时装企业应对终端泄密挑战

客户简要介绍 某高级时装是国际知名的奢侈品牌控股及管理运营公司。公司依靠丰富的奢侈品市场运作经验、成熟的品牌管理架构&#xff0c;以及对艺术文化的热爱与尊重&#xff0c;发掘低调且优秀的意大利品牌&#xff0c;将其推向市场取得成功。公司在全球范围内践行多品牌发展…

Mesh网格撞击变形

物理碰撞 两个游戏物体发生碰撞的必要条件&#xff1a; 发生碰撞的两个游戏物体有Collider&#xff08;碰撞器&#xff09;组件&#xff1b;其中一个物体有Rigidbody&#xff08;刚体&#xff09;组件。 MonoBehaviour中的相关回调函数&#xff1a; 回调函数详解OnCollisio…

支持多医院使用的云HIS医院信息化管理系统源码 SaaS模式

一、什么是HIS系统 HIS系统&#xff08;Hospital InformationSystem&#xff09;是医院信息化建设的核心组成部分&#xff0c;它是为了管理和运营医院而设计和开发的一套综合性的信息系统。HIS系统通过整合医院各个部门和业务流程的数据和信息&#xff0c;实现了医院内部的信息…