了解linux ACL权限

本章主要介绍 ACL 权限
  • ACL 的用法
  • ACL 的 mask 权限
  • 设置默认权限
10.1 ACL 介绍及基本用法
前面讲权限时,是对u、g、o设置权限的,现在假如有图10-1所示的需求。
有一个目录aa,要求tom、bob、mary具有不同的权限,利用前面讲过的知识是完全可
以实现的。
所有者设置为tom,把所有者的权限设置为rw。
所属组设置为bob,把所属组的权限设置为r。
mary使用o的权限,把 o 的权限设置为rx。
但是如果有四个或更多个用户,要求设置不同的权限
利用前面讲的知识就无法实现了,要实现对具体用户设置权限,我们可以考虑ACL。
ACL的用法如下。
setfacl ‐m u: 用户名 :rw‐ file/dir ‐‐对用户设置ACL
setfacl ‐m g: 组名 :rw‐ file/dir ‐‐对组设置ACL
在/opt下创建一个文件/opt/aa.txt,命令如下。
[root@op opt]# touch aa.txt
[root@op opt]# ls -ls aa.txt 
0 -rw-r--r--. 1 root root 0 12月  2 15:31 aa.txt
[root@op opt]# 
[root@op opt]# 
对于 jjj 用户来说,只能使用o的权限,所以 blab 是不能往此 aa.txt 中写内容的。打
开一个新标签使用 blab 登录,然后在 aa.txt 中测试写。
[jjj@op opt]$ echo aaa > aa.txt 
-bash: aa.txt: 权限不够
[jjj@op opt]$ 
此时是写不进去的。使用root用户对 aa.txt设置ACL权限,首先查看aa.txt是否具有ACL
权限,查看的命令是getfacl,如下所示。
[root@op opt]# getfacl aa.txt 
# file: aa.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--[root@op opt]# 
如果不想结果中显示前面几行带有#的,可以加上-c选项,命令如下。
[root@op opt]# getfacl -c aa.txt
user::rw-
group::r--
other::r--[root@op opt]# 
设置aa.txt的ACL权限,使得 blab 用户对 aa.txt 只具有写权限而没有读权限。
[root@op opt]# setfacl -m u:jjj:-w- aa.txt
[root@op opt]# 
查看aa.txt的ACL权限、命令如下。
[root@op opt]# getfacl -c aa.txt
user::rw-
user:jjj:-w-
group::r--
mask::rw-
other::r--[root@op opt]# 
使用jjj用户进行测试,命令如下。
[jjj@op opt]$ echo aaa > /opt/aa.txt 
[jjj@op opt]$ cat aa.txt
cat: aa.txt: 权限不够
[jjj@op opt]$ 
可以看到,blab 用户对/opt/aa.txt具备写权限,但是没有读权限。
为aa.txt设置ACL 权限,让 blab 用户具备读写权限,命令如下。
[root@op opt]# setfacl -m u:jjj:rw- aa.txt
[root@op opt]# 
可以看到,blab 用户对 aa.txt 具有 rw 权限了,然后使用 blab 用户往aa.txt中写数据,如
下所示。
[jjj@op opt]$ cat aa.txt
aaa
[jjj@op opt]$ 

10.2 ACL 的 mask 权限
先查看aa.txt的ACL 权限,然后介绍5个名词。
[root@op opt]# getfacl -c aa.txt 
user::rw-     ACL_USER_OBJ
user:jjj:rw-   ACL_USER
group::r--     ACL_GROUP_OBJ
group:tom:rw-  ACL_GROUP
mask::rw-      ACL_MASK
other::r--[root@op 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@op opt]# setfacl -m g:tom:r-- aa.txt
[root@op opt]# getfacl -c aa.txt 
user::rw-
user:jjj:rw-
group::r--
group:tom:r--
mask::rw-
other::r--[root@op opt]# 
这里因为ACL_USER (blab用户)的权限是rw,是这几者中最高的,所以 ACL_MASK的
权限并没有改变。现在将blab的ACL权限改成---,命令如下。
[root@op opt]# setfacl -m u:jjj:--- aa.txt 
[root@op opt]# getfacl -c aa.txt 
user::rw-
user:jjj:---
group::r--
group:tom:r--
mask::r--
other::r--[root@op opt]# 
因为这几者中最高权限为r,所以ACL_MASK的权限为r。
如果将 jjj 的 ACL权限设置为rwx
[root@op opt]# setfacl -m u:jjj:rwx aa.txt 
[root@op opt]# getfacl -c aa.txt 
user::rw-
user:jjj:rwx
group::r--
group:tom:r--
mask::rwx
other::r--[root@op opt]# 
jjj的 ACL权限现在是最高的,所以 mask也跟着变成了rwx。
10.3 设置默认权限
当我们对目录设置ACL时,还可以设置默认ACL 权限,语法如下。
1 setfacl ‐m d:u:user1:rwx dir
不管谁在目录dir中新创建的目录或文件,对user1都会自动设置ACL权限rwx。
注意
这里的默认权限是对dir中新创建的目录或文件,并非对dir本身设置权限。
这里语法中的d(default)是默认的意思。为了更好地解释,我们看下面的例子。
创建目录/opt/xx,为了测试方便,可以设置ACL 权限,让tom具有rwx权限,命令如
下。
[root@op opt]# mkdir xx
[root@op opt]# setfacl -m u:jjj:rwx xx
[root@op opt]# getfacl -c xx
user::rwx
user:jjj:rwx
group::r-x
mask::rwx
other::r-x[root@op opt]# 
现在设置blab对目录xx的默认ACL权限为rwx,命令如下。
[root@op opt]# setfacl -m d:u:blab:rwx xx
[root@op opt]# getfacl -c xx/
user::rwx
user:jjj:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:blab:rwx
default:group::r-x
default:mask::rwx
default:other::r-x[root@op opt]# 
不管任何人在目录xx中新创建的文件或目录,对blab都会有默认ACL权限rwx。
测试:使用jjj用户在 /opt/xx下创建一个文件 aa.txt,然后查看此文件的ACL权限,命
令如下。
[jjj@op opt]$ touch /opt/xx/aa.txt
[jjj@op opt]$ getfacl -c /opt/xx/aa.txt 
getfacl: Removing leading '/' from absolute path names
user::rw-
user:blab:rwx			#effective:rw-
group::r-x			#effective:r--
mask::rw-
other::r--[jjj@op opt]$ 
可以看到,blab对/opt/xx/aa.txt具有默认ACL 权限 rwx。因为除了后期修改权限,创
建文件时不会出现x权限,所以这里出现了#effective:rw-。
然后blab用户往/opt/xx 中写入内容。
[blab@op ~]$ touch /opt/xx/bb.txt
touch: 无法创建 '/opt/xx/bb.txt': 权限不够
[blab@op ~]$ 
会发现权限不够,写不进去,说明默认权限是对/opt/xx中新创建的目录或文件,并非
对/opt/xx本身设置权限。
取消默认权限,命令如下。
[root@op opt]# setfacl -x d:u:blab xx
[root@op opt]# 
取消默认权限之后,以后在/opt/xx中新创建的文件对lduan用户不会有默认ACL权限但是
已经存在的文件的默认权限也不会取消。

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

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

相关文章

Navicat 技术指引 | 适用于 GaussDB 分布式的数据生成功能

Navicat Premium(16.3.3 Windows 版或以上)正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结…

基因组学分析的解决方案——比较基因组杂交(CGH)

作为生命科学工具的先驱者和创新者,Enzo Life Sciences根据其专有的核酸(DNA&RNA)标记技术,研发出比较基因组杂交(Comparative Genomic Hybridization,CGH)试剂盒。CGH试剂盒是一个检测与染…

urllib 异常、cookie、handler及代理(四)

目录 一、urllib异常 二、urllib cookie登录 三、urllib handler 处理器的基本使用 四、urllib 代理和代理池 参考 一、urllib异常 URLError/HTTPError 简介: 1.HTTPError类是URLError类的子类 2.导入的包urllib.error.HTTPError urllib.error.URLError 3.h…

最实用的UPS监控技巧,今天用一篇文章告诉你!

在现代信息技术高度依赖的环境中,机房扮演着至关重要的角色,而UPS(不间断电源)作为保障设备之一,对于确保数据中心和服务器系统的稳定运行至关重要。 为了更好地监控和管理UPS设备,提高机房设备的可靠性和稳…

做题笔记:SQL Sever 方式做牛客SQL的题目--查询每天刷题通过数最多的前二名用户

----查询每天刷题通过数最多的前二名用户id和刷题数 现有牛客刷题表questions_pass_record,请查询每天刷题通过数最多的前二名用户id和刷题数,输出按照日期升序排序,查询返回结果名称和顺序为: date|user_id|pass_count 表单创建…

数据清洗、特征工程和数据可视化、数据挖掘与建模的应用场景

1.5 数据清洗、特征工程和数据可视化、挖掘建模的应用场景 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解1.5节内容。本书已正式出版上市,当当、京东、淘宝等平台热销中,搜索书名即可。内容涵盖数据科学应…

灾备行业常用术语

在灾备(Disaster Recovery)行业中,有一些常用的术语和概念,这些术语通常涉及到数据保护、业务连续性和灾难恢复方面。以下是一些常见的灾备行业术语: 备份(Backup) 对数据的定期复制&#xff…

MTU TCP-MSS(转载)

MTU MTU 最大传输单元(Maximum Transmission Unit,MTU)用来通知对方所能接受数据服务单元的最大尺寸,说明发送方能够接受的有效载荷大小。 是包或帧的最大长度,一般以字节记。如果MTU过大,在碰到路由器时…

值得收藏!在线PDF转换网站,让你的文件转换更简单、更快捷!

你是否曾经因为PDF文件的格式问题而感到困扰?是否曾经因为无法快速转换PDF文件而感到烦恼? 现在,这些问题都可以迎刃而解了!下面这个在线PDF转换网站,就是你的解决方案。网站地址:https://fileprocess.shw…

zabbix 邮件报警

zabbix 邮件报警 Zabbix-报警功能(触发器/动作)可以监控 nginx 是否正常运行 可以微信报警和邮件报警 https://blog.csdn.net/zfw_666666/article/details/124708605 企业号注册地址:https://qy.weixin.qq.com/填写企业注册信息&#xff0c…

安卓NDK开发——常用数据std::string、jstring、cv::Mat、Bitmap互转

前言 在 Android NDK开发中,JNI可以在 Java 和本地代码(如 C、C)之间进行通信。JNI 提供了在 Android 应用中调用本地(C/C)代码的能力,并允许本地代码与 Java 代码相互交互。下面是在安卓上实现OCR时用到的…

Linux指令学习

目录 1.ls指令 2.pwd命令 3.cd 指令 4. touch指令 5.mkdir指令 6.rmdir指令 && rm 指令 7.man指令 8.cp指令 9.mv指令 10.cat指令 11.more指令 12.less指令 13.head指令 14.find指令: -name 15.grep指令 16.zip/unzip指令: 17.tar…