(转)CentOS7使用ACL精确控制文件和目录的访问权限
原文:https://www.linuxidc.com/Linux/2018-01/150111.htm
https://blog.csdn.net/maxiaoqiang1/article/details/6258390-----Linux系统中文件权限ACL功能(上)
https://blog.csdn.net/xiangliangyu/article/details/22288531---linux下通过acl配置灵活目录文件权限(详细)
Linux基本的权限控制仅可以对所属用户、所属组、其他用户进行的权限控制,而不能精确地控制每个用户的权限。ACL规则就是用来解决这个问题的。使用ACL规则,我们可以针对单一账户设置文件及目录的访问权限。
实验用户和组环境
组root:包含用户root
组zenandidi:包含用户zenandidi
组nannan:包含用户nannan、zenandidi
实验文件内容
[root: ~]# cat acl_test/test.sh
#/bin/bash
echo "Success!"
检查文件系统的ACL功能是否已经开启
CentOS7默认已经开启ACL功能
[root: ~]# tune2fs -l /dev/sda2 | grep acl
Default mount options: user_xattr acl
如果有看到acl,说明已经开启。
查看是否设定了ACL规则
直接用ls -l查看,如果权限一栏后面有个加号,说明文件被设定了ACL规则。
[root: acl_test]# ll
总用量 12K
-rw-rwxr--+ 1 root root 27 5月 7 08:03 test.sh
使用getfacl查询ACL规则
命令基本用法
getfacl <文件>
举例说明
列出test.sh的ACL规则(下面分段说明)
[root: acl_test]# getfacl test.sh
以下为文件的基本信息
# file: test.sh #文件名
# owner: root #所有者
# group: root #所属组
以下为文件的用户权限设置
user::rw- #Linux默认的所属用户权限
user:zenandidi:rwx #附加ACL用户权限,这里表示用户zenandidi有读、写、执行的权限
以下为文件的组权限设置
group::r-- #Linux默认的所属组权限
其他信息
mask::r-x #权限掩码(最后详细说明)
other::r-- #Linux默认的其他用户权限
使用setfacl设置ACL规则
命令基本用法
setfacl <选项> [规则] <文件>
选项:
-m 新增一条ACL规则
-x 删除一条ACL规则
-b 清空所有ACL规则
举例说明
例1 清空test.sh中所有ACL规则
[root: acl_test]# setfacl -b test.sh
检查设置
[root: acl_test]# getfacl test.sh
# file: test.sh
# owner: root
# group: root
user::rw-
group::r--
other::r--
[root: acl_test]# ll
总用量 12K
-rw-r--r-- 1 root root 27 5月 7 08:03 test.sh
#权限栏的加号已经消失,说明没有设定ACL规则
例2 为test.sh添加一条ACL规则,使得用户zenandidi具有读、执行权限
设置之前先看看能不能用用户zenandidi的身份执行
[root: acl_test]# sudo -u zenandidi ./test.sh
sudo:./test.sh:找不到命令
由于没有赋予用户zenandidi执行权限,默认使用其他用户的权限,所以不能执行。
设置权限
[root: acl_test]# setfacl -m u:zenandidi:rx test.sh
检查设置
[root: acl_test]# getfacl test.sh
# file: test.sh
# owner: root
# group: root
user::rw-
user:zenandidi:r-x
group::r--
mask::r-x
other::r--
[root: acl_test]# ll
总用量 12K
-rw-r-xr--+ 1 root root 27 5月 7 08:03 test.sh
再看看能不能用zenandidi的身份执行
[root: acl_test]# sudo -u zenandidi ./test.sh
Success!
执行成功。
好奇地看了下root的
[root: acl_test]# ./test.sh
Success!
咦?我好像没设置root可以执行,为什么也执行成功了捏?其实这是mask在作怪,最后再看吧。
例3 为test.sh添加一条ACL规则,使得组nannan具有读、写权限
设置之前先看看能不能用用户zenandidi、nannan的身份改文件名
[root: acl_test]# sudo -u zenandidi mv test.sh test1.sh
mv: 无法将"test.sh" 移动至"test1.sh": 权限不够
[root: acl_test]# sudo -u nannan mv test.sh test1.sh
mv: 无法将"test.sh" 移动至"test1.sh": 权限不够
无法改文件名,因为没有赋予写权限。
设置权限
[root: acl_test]# setfacl -m g:nannan:rw test.sh
检查设置
[root: acl_test]# getfacl test.sh
# file: test.sh
# owner: root
# group: root
user::rw-
user:zenandidi:r-x
group::r--
group:nannan:rw- #effective:r--
mask::r-x
other::r--
再看看能不能改文件名
[root: acl_test]# sudo -u zenandidi mv test.sh test1.sh
mv: 无法将"test.sh" 移动至"test1.sh": 权限不够
[root: acl_test]# sudo -u nannan mv test.sh test1.sh
mv: 无法将"test.sh" 移动至"test1.sh": 权限不够
还是不行啊,怎么回事?还是那个mask的事。下面详细说明。
关于mask的那点事
1. mask值规定了允许的最大权限
例如:
mask为rwx,说明ACL规则可以设置全部权限。
mask为rw-,说明ACL规则仅可设置读、写权限,无论是否设置执行权限,文件都不能被执行。
如果getfacl输出中有#effective:xxx这个注释,说明ACL规则受mask限制,仅有xxx权限。应特别注意!
例3的问题可以通过设置mask来解决。
[root: acl_test]# setfacl -m mask:rwx test.sh
2. mask值会直接作为Linux基本权限中的组权限
例1的问题就出在这里。
设置ACL之前
[root: acl_test]# ll
总用量 12K
-rw-r--r-- 1 root root 27 5月 7 08:03
设置ACL之后,组权限变成了mask值
[root: acl_test]# ll
总用量 12K
-rw-r-xr--+ 1 root root 27 5月 7 08:03 test.sh
因为root处在root组之中,所以自然就有了执行的权限。
(转)CentOS7使用ACL精确控制文件和目录的访问权限的更多相关文章
- Linux改变文件或目录的访问权限命令
使用 ll 或 ls -l 指令时 第一列会显示出目录下文件的权限 例如∶ -rw-r-r- 横线代表空许可.r代表只读,w代表写,x代表可执行.注意这里共有10个位置.第一个字符指定了文件类型 ...
- [添加用户]解决useradd 用户后没有添加用户Home目录的情况,Linux改变文件或目录的访问权限命令,linux修改用户密码
将nobody用户添加到nogroup 组:usermod -g nogroup nobody cat /etc/passwd|grep nobodynobody:x:65534:65534:nobo ...
- 攻城狮在路上(叁)Linux(十五)--- 文件与目录的默认权限与隐藏权限
一.文件默认权限:umask <==需要被减去的权限. 1.umask指的是当前用户在新建文件或者目录时的默认权限,如0022; 2.默认情况下,用户创建文件的最大权限为666; 创建目录的最大 ...
- 文件与目录的默认权限与隐藏权限【转vbird】
一个文件有若干个属性, 包括读写运行(r, w, x)等基本权限,及是否为目录 (d) 与文件 (-) 或者是连结档 (l) 等等的属性! 要修改属性的方法在前面也约略提过了(chgrp, chown ...
- Linux学习之CentOS(九)-----文件与目录的默认权限与隐藏权限
文件与目录的默认权限与隐藏权限 一个文件有若干个属性, 包括读写运行(r, w, x)等基本权限,及是否为目录 (d) 与文件 (-) 或者是连结档 (l) 等等的属性! 要修改属性的方法在前面也约略 ...
- Linux学习之CentOS(八)----文件与目录的默认权限与隐藏权限(转)
文件与目录的默认权限与隐藏权限 一个文件有若干个属性, 包括读写运行(r, w, x)等基本权限,及是否为目录 (d) 与文件 (-) 或者是连结档 (l) 等等的属性! 要修改属性的方法在前面也约略 ...
- linux 权限管理命令chown、chgrp、umask、linux新建文件或目录的默认权限755
chown /bin/chownchown [用户] [文件或目录] 改变文件或目录的所有者只有root可以改变文件或目录的所有者 root用户:mkdir /tmptouch /tmp/test.f ...
- LINUX创建文件和目录的默认权限
在linux中,一位用户在创建文件和目录时,对其具有的权限都是一样的,如需更改,需要chmod命令做相应的更改.为什么?其实是权限掩码起作用了. 权限掩码的作用就是规范初创文件和目录时候的权限设置,免 ...
- linux文件上传,给文件或目录添加apache权限
系统环境:ubuntu11.10/apache2/php5.3.6 在LAMP环境中,测试一个简单的php文件上传功能时,发现/var/log/apache2/error.log中出现如下php警告: ...
随机推荐
- 2018.07.26NOIP模拟 魔法数字(数位dp)
魔法数字 题目背景 ASDFZ-NOIP2016模拟 题目描述 在数论领域中,人们研究的基础莫过于数字的整除关系.一般情况下,我们说整除总在两个数字间进行,例如 a | b(a能整除b)表示 b 除以 ...
- time & datetime 模块
在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime,calendar(很少用,不讲),下面分别来介绍. 在开始之前,首先要说明几点: 一 ...
- 如何更改myecelipse、eclipse的Project Explorer的背景颜色
这个是我研究了很久发现的,因为myecelipse.eclipse本身是随着系统的颜色改变而改变的,windows系统都会随着系统改变而改变的,所以找了很多资料都没能改变它的背景色,今天发现了一个不错 ...
- plsql高版本无法设置Fixedsys字体解决办法(win7&winXP适用)
http://hi.baidu.com/crsky2008/item/c174c9fb52577919e3e3bd6b 设置如下:Tools->Preferences->Oracle-&g ...
- WPF 最简单的TextBox水印
最简单的TextBox加水印的方法,但是不具有很强的通用性. 如果你只是使用一次,或者用的不多,偷偷懒可以使用. 因为此方法只需要修改TextBox的Template,而不用重写何任代码. 注意: 1 ...
- asp.net mvc 在JS中跳转到其它controller/action
平时在ASP.NET 中经常这样写, $('#loginOut').click(function() { $.messager.confirm('系统提示', '您确定要退出本次登 ...
- Spring Boot 应用系列 4 -- Spring Boot 2 整合log4j2
一.背景 1. log4j2传承于log4j和logback,它是目前性能最好的日志处理工具,有关它们的性能对比请看: 2. 除了性能好之外,log4j2有这么几个重要的新features: (1) ...
- jvm lock低性能分析
日志平台client面临着输出日志的问题.为了避免干扰业务系统,我们采用异步输出的方式.这实际上相当于一个多生产者-单消费者的多线程模型.传统的方式是使用同步加锁的方式,但是这种方式不够高效.之前 钟 ...
- 基于统计的无词典的高频词抽取(二)——根据LCP数组计算词频
接着上文[基于统计的无词典的高频词抽取(一)——后缀数组字典序排序],本文主要讲解高频子串抽取部分. 如果看过上一篇文章的朋友都知道,我们通过 快排 或 基数排序算出了存储后缀数组字典序的PAT数组, ...
- MYC编译器源码之语法分析
MyC编译器采用自顶向下的方法进行语法解析,这种语法解析方式,一般是从最左边的Token开始,然后自顶向下看哪一条语法规则可能包含这个Token,如果包含这个Token,则自左向右根据这条语法规则逐一 ...