ACL:访问控制列表(Access Control List)。

一般来说权限是针对某一类用户设置的。例如:一个文件只有拥有者、组、其他用户三种设置方式,如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的ACL。
基于普通文件或目录设置 ACL 就是对指定的用户或用户组设置文件的操作权限。
如果针对某个目录设置了 ACL,则目录中的文件会继承其 ACL;若针对文件设置了 ACL,则文件不再继承其所在目录的 ACL。

1、setfacl命令,用于管理文件的 ACL 规则,格式为“setfacl [参数] 文件名称”。

-m, --modify=acl:修改文件或目录的扩展ACL设置信息
-x, --remove=acl:从文件或目录删除一个扩展的ACL设置信息
-b, --remove-all:删除所有的扩展的ACL设置信息
-k, --remove-default:删除缺省的acl设置信息
-n, --no-mask:不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定
-d, --default:设置默认的ACL设置信息(只对目录有效)
-R, --recursive:操作递归到所有子目录和 文件 常用的增加ACL权限
①给用户设定 ACL 权限:setfacl -m u:用户名:权限 指定文件名
②给用户组设定 ACL 权限:setfacl -m g:组名:权限 指定文件名 常用的删除ACL权限
①删除指定用户的ACL权限: setfacl -x u:用户名 文件名
②删除指定用户组的ACL权限:setfacl -x g:组名 文件名
③删除文件的所有ACL权限:setfacl -b 文件名

场景1:/home/data是ftp用户上传数据的目录,现在es用户需要能进行读取和执行。

[es@bigdata-senior01 ~]$ cd home/data  #没有权限进入
-bash: cd: home/data: 没有那个文件或目录
[es@bigdata-senior01 ~]$ getfacl /home/data
getfacl: Removing leading '/' from absolute path names
# file: home/data
# owner: xu.dm.ftp #只有xu.dm.ftp有权限
# group: root
user::rwx
group::---
other::--- [es@bigdata-senior01 ~]$ ll home/data
ls: 无法访问home/data: 没有那个文件或目录
[es@bigdata-senior01 ~]$ setfacl -Rm u:es:rx /home/data
setfacl: /home/data: 不允许的操作
setfacl: /home/data: 权限不够 [es@bigdata-senior01 ~]$ sudo setfacl -Rm u:es:rx /home/data [es@bigdata-senior01 ~]$ ll /home/data -d
drwxr-x---+ 2 xu.dm.ftp root 224 11月 13 22:36 /home/data
#这个时候看到目录权限最后又个“+”号,说明是ACL控制目录 [es@bigdata-senior01 ~]$ getfacl /home/data
getfacl: Removing leading '/' from absolute path names
# file: home/data
# owner: xu.dm.ftp
# group: root
user::rwx
user:es:r-x #es用户获取了rx权限
group::---
mask::r-x
other::---

场景2:删除/home/data目录es的acl权限,删除全部/home/data的acl权限

[es@bigdata-senior01 ~]$ sudo setfacl -x u:es /home/data

[es@bigdata-senior01 ~]$ ll /home/data -d
drwx------+ 2 xu.dm.ftp root 224 1月 12 22:45 /home/data
#实际上只有一个es用户设置了对/home/data的acl权限,删除后,目录里那个+;号依然在。
#用getfacl查看后,发现还有一个mask属性遗留
[es@bigdata-senior01 ~]$ getfacl /home/data
getfacl: Removing leading '/' from absolute path names
# file: home/data
# owner: xu.dm.ftp
# group: root
user::rwx
group::---
mask::---
other::---

#全部删除ACL
[es@bigdata-senior01 ~]$ sudo setfacl -b /home/data
[es@bigdata-senior01 ~]$ ll /home/data -d
drwx------. 2 xu.dm.ftp root 224 1月 12 22:45 /home/data
[es@bigdata-senior01 ~]$ getfacl /home/data
getfacl: Removing leading '/' from absolute path names
# file: home/data
# owner: xu.dm.ftp
# group: root
user::rwx
group::---
other::---

2、getfacl,用于显示文件上设置的 ACL 信息,格式为“getfacl 文件名称”。

最新文章

  1. C#对象序列化与反序列化
  2. [经验交流] 为 mesos framework 分配资源
  3. 遍历进程活动链表(ActiveProcessLinks)、DKOM隐藏进程
  4. 2017.1.8a版给信息源新增:max_len、max_db字段
  5. C# Process运行cmd命令的异步回显
  6. Protocol-SPI协议
  7. 使用预处理PreparedStatement执行Sql语句
  8. git 创建多个账户ssh
  9. LeetCode_Permutation Sequence
  10. nmon的安装与使用
  11. 201521123008<java程序设计>第三周实验总结
  12. MongoDB 基本操作学习笔记
  13. Learn Lua in 15 Minutes
  14. 重温《STL源码剖析》笔记 第五章
  15. flask(一)之路由和视图
  16. 比NGINX更快:nginx-1.15.5 vs mongols-1.2.3
  17. 19/03/30Python笔记
  18. 微信小程序 thirdScriptError sdk uncaught third Error regeneratorRuntime is not defined ReferenceError: regeneratorRuntime is not defined
  19. vue模板编译
  20. 使用 RSA 非对称加密保证数据不被篡改 java 例子代码

热门文章

  1. 成都Uber优步司机奖励政策(2月18日)
  2. SSH项目中的困惑之一
  3. hdu1045Fire Net(经典dfs)
  4. bash特性-命令历史命令行编辑
  5. 域名添加www之后(或域名后加端口)无法访问(阿里云服务器)
  6. Java开发工程师(Web方向) - 03.数据库开发 - 期末考试
  7. 【sessionInfo】使用说明
  8. POJ 3046
  9. python3 SQLAlchemy模块使用
  10. Quartz定时器原理与使用