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

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

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

相关文章

有哪些办法可以提纯蒸馏高纯酸试剂?

亚沸腾状态下提纯高纯酸,是一个在超净化实验室经常使用的方法,所用的仪器是酸纯化器。 工作原理 酸纯化器是利用热辐射原理,保持液体温度低于沸点温度蒸发,再将其酸蒸气冷凝从而制备高纯酸以及高纯试剂,广泛应用于样…

计算机服务器中了halo勒索病毒如何解密,halo勒索病毒解密数据恢复

计算机技术的不断发展,为企业的生产运营提供了极大便利,但也为网络安全埋下隐患,网络上的勒索病毒种类也在不断增加,给企业的数据安全带来了严重威胁。近日,云天数据恢复中心接到许多企业的求助,企业的计算…

中后缀表达式

一、利用后缀表达式进行计算 1)解题思路 如果当前字符串是操作数,就将该操作数入栈;如果当前字符串是操作符,就取栈顶的两个操作数进行运算(注意:第一个出栈的数为计算时的右操作数;第二个出栈…

【力扣题解】P144-二叉树的前序遍历-Java题解

👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P144-二叉树的前序遍历-Java题解🌏题目描述💡题解&#x1f30…

blender使用faceit绑定自己的表情动作

blender使用faceit绑定自己的表情控制模型 faceit是个神器,来记录一下如何让表情动起来保持相对位置头部分离,方便后续绑定faceitfaceit的注册rig生成地标Animate可以修正表情烘培之前记得保存使用Faceit的整个流程 faceit是个神器,来记录一下…

2024 年网络安全展望:未来是什么?

为了建立强大的网络安全计划,组织必须首先了解整体威胁环境不断变化的性质。 人工智能在成为安全团队的帮助之前,将为网络犯罪分子带来巨大的福音。 网络犯罪分子和不良行为者将受益于先进人工智能工具的广泛部署,然后他们的目标才能建立人…

python爬虫进阶-每日一学(GIF验证码识别)

目的 学习更多的python反爬虫策略 测试网址 http://credit.customs.gov.cn/ccppserver/verifyCode/creator分析 01 下载gif图片 02 使用ddddocr逐帧识别 03 如指定字符串出现次数大于等于3,则认定为正确的识别结果 经验证,识别成功率95%源码 #!/usr…

【网络奇缘】——奈氏准则和香农定理从理论到实践一站式服务|计算机网络

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:"没有罗马,那就自己创造罗马~" 目录 失真 - 信号的变化 影响信号失真的因素: ​编辑 失真的一种现象:码间…

162TB全球卫星地图瓦片服务

这里再为你分享长光的另一款重量级产品,即《吉林一号国产化全球遥感底图瓦片服务》,你可以把它简单地理解为是一套全球离线地图服务系统。 为了行文方便,我们在本文暂且称之为“长光全球瓦片系统”。 《长光全球瓦片系统》参数 《长光全球…

UE5 C++(九)— 静态、动态加载类和资源

文章目录 前提静态加载类和资源静态加载资源静态加载类 动态加载类和资源动态资源动态加载类 前提 有必要说一下,静态这块内容加载时我用UE5.2版本出现调用静态资源不是显示问题,修改后容易崩。所以,这里不建议5.2版本,直接用5.3…

Python pandas 操作 excel 详解

文章目录 1 概述1.1 Series 和 DataFrame 2 常用操作2.1 创建 Excel:to_excel()2.2 读取 Excel:read_excel()2.2.1 header:标题的行索引2.2.2 index_col:索引列2.2.3 dtype:数据类型2.2.4 skiprows:跳过的行…

MySQL——表的内外连接

目录 一.内连接 二.外连接 1.左外连接 2.右外连接 一.内连接 表的连接分为内连和外连 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询。 语法: s…

入侵检测(HCIP)

目录 一、渗透流程 二、入侵检测 1、入侵检测原理 2、入侵检测系统结构 3、入侵防御系统 三、恶意代码 1、恶意代码概念: 2、恶意代码命名: 3、恶意代码按传播方式分类: 4、恶意代码按照功能分类: 5、恶意代码传播途径…

uni-app page新建以及page外观配置

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

ArcGIS高程点生成等高线

基本步骤:数据清洗→创建TIN→TIN转栅格→等值线→平滑线。 1.(重要)数据清理:删除高程点中的高程异常值数据。 2.创建TIN:系统工具→3D Analyst Tools→数据管理→TIN→创建TIN(可直接搜索工具TIN)。 单击…

如何进行快照管理

目录 快照管理 手动创建快照 自动创建快照 快照管理 快照管理 传统的物理服务器,为了确保服务器中数据的安全,需要你自行定制备份策略,如果备份到服务器本地,如果存储损坏,备份会同正常数据一起丢失。也就是说需要…

从零构建tomcat环境

一、官网构建 1.1 下载 一般来说对于开源软件都有自己的官方网站,并且会附上使用文档以及一些特性和二次构建的方法,那么我们首先的话需要从官网或者tomcat上下载到我们需要的源码包。下载地址:官网、Github。 这里需要声明一下&#xff…

计算机毕业设计------SSM水果蔬菜商城批发网站

项目介绍 本项目分为前后台,前台为普通用户登录,后台为管理员登录; 管理员角色包含以下功能: 管理员登录,管理员管理,网站用户管理,新闻公告管理,果蔬类型管理,城市信息管理,配货点管理,果蔬商品管理,果蔬订单管理,果蔬评价管理…

vivo手机怎样录屏?轻松录制精彩瞬间

“vivo手机怎样录屏呀?买了最新款的vivo手机,感觉功能挺齐全的,最近玩游戏的时候,突然想要录屏,但是怎么都找不到,就想问问大家,vivo手机录屏在哪里呀?” 智能手机已经成为我们生活…

【Java动态代理如何实现】

✅Java动态代理如何实现 ✅JDK动态代理和Cglib动态代理的区别 ✅拓展知识仓✅静态代理和动态代理的区别✅动态代理的用途✅Spring AOP的实现方式📑JDK 动态代理的代码段📑Cglib动态代理的代码块 ✅注意事项: 在Java中,实现动态代理…