在 Linux下,对一个文件(或者资源)可以进行操作的对象被分为三类: file owner(文件的拥有者),group(组,可以不是文件拥有者所在的组), other (其他)而对于每一类别又分别定义了读、写、执行(read, write and execute )权限以及特殊权限。但是这些权限只能搭配使用而已,如果想要对其其他用户组或者其他用户里的某一位用户设定一些不同的权限,就不行了。

LINUX上的ACL访问控制列表,主要的目的是在提供传统的owner,group,others的read,write,execute权限之外的局部权限设定。ACL可以针对单个用户,单个文件或目录来进行r,w,x的权限设定,特别适用于需要特殊权限的使用情况。简单地来说,ACL就是可以设置特定用户或用户组对于一个文件/目录的操作权限,可以实现灵活的权限管理,除了文件的所有者,所属组和其它人,可以对更多的用户设置权限。简单地来说ACL就是可以设置特定用户或者用户组对于一个文件/文件夹的操作权限。

由于ACL是传统的类unix操作系统权限的额外支持项目,因此需要使用ACL必须要有文件系统的支持才行。目前大多数的文件系统都支持ACL。(ACL访问控制列表需要内核支持,在Linux内核2.6以后默认加入了ACL功能)

ACL管理命令: getfacl, setfacl, chacl

acl是一个可以被acl_from_text程序分析出各用户权限的字符串。该字符串用逗号分隔成多个片段

每个片段的形式都如:tag:name:perm

tag可以是下面形式的一种:

"user" (or "u")表示这是一个用户的ACL条目。

"group" (or "g")表示这是一个用户组的ACL条目。

"other" (or "o")表示这是其它的ACL条目。即没有在ACL指定的用户和组的ACL条目。

"mask" (or "m")表示这是一个掩码的ACL条目。在指定其它非用户属主的ACL权限时,这个掩码条目必须被指定,否则执行chacl命令会出错。

name可以是用户名或组名。如果不指定,那么默认是给文件或目录的属主或用户组指定acl权限。当然name也可以是用户的uid或者组的gid。

perm是指该用户或组所具有的权限,它是由"rwx"组成的一个字符串,什么意思当然大家都明白了。如果要使该用户或组不具有某种权限,简单的以"-"代替指定的字母就可以了。例如"r-x"是只具有读,执行权限。

getfacl

使用getfacl可以获取文件访问控制列表

使用方法: getfacl [-aceEsRLPtpndvh] 文件 ...

-a, --access 仅显示文件访问控制列表

-d, --default 仅显示默认的访问控制列表

-c, --omit-header 不显示注释表头

-e, --all-effective 显示所有的有效权限

-E, --no-effective 显示无效权限

-s, --skip-base 跳过只有基条目(base entries)的文件

-R, --recursive 递归显示子目录

-L, --logical 逻辑遍历(跟随符号链接)

-P, --physical 物理遍历(不跟随符号链接)

-t, --tabular 使用制表符分隔的输出格式

-n, --numeric 显示数字的用户/组标识

-p, --absolute-names 不去除路径前的 '/' 符号

-v, --version 显示版本并退出

-h, --help 显示本帮助信息

获取文件ACL访问控制列表:

getfacl test.txt

# file: test.txt

# owner: root

# group: family

user::rw-

group::rw-

mask::rw-

other::---

前三行以#开头的定义了文件名,文件所有者和文件拥有组. 这些信息没有太大的作用,可以用 --omit-header来省略掉

user::rw- 定义了ACL_USER_OBJ, 说明file owner拥有读和写的权限

group::rw- 定义了ACL_GROUP_OBJ,说明文件的group拥有read和write 权限

mask::rw- 定义了ACL_MASK的权限为read and write

other::--- 定义了ACL_OTHER的没有任何权限操作此文件

ACL由一系列的访问控制权限组成,主要的有如下:

ACL_USER_OBJ: 相当于Linux里file_owner的权限

ACL_USER: 定义了额外的用户可以对此文件拥有的权限

ACL_GROUP_OBJ: 相当于Linux里group的权限

ACL_GROUP: 定义了额外的组可以对此文件拥有的权限

ACL_MASK: 定义了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大权限

ACL_OTHER: 相当于Linux里other的权限

setfacl

使用setfacl设定文件访问控制列表

用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...

-m, --modify=acl 更改文件的访问控制列表

-M, --modify-file=file 从文件读取访问控制列表条目更改

-x, --remove=acl 根据文件中访问控制列表移除条目

-X, --remove-file=file 从文件读取访问控制列表条目并删除

-b, --remove-all 删除所有扩展访问控制列表条目

-k, --remove-default 移除默认访问控制列表

--set=acl 设定替换当前的文件访问控制列表

--set-file=file 从文件中读取访问控制列表条目设定

--mask 重新计算有效权限掩码

-n, --no-mask 不重新计算有效权限掩码

-d, --default 应用到默认访问控制列表的操作

-R, --recursive 递归操作子目录

-L, --logical 依照系统逻辑,跟随符号链接

-P, --physical 依照自然逻辑,不跟随符号链接

--restore=file 恢复访问控制列表,和“getfacl -R”作用相反

--test 测试模式,并不真正修改访问控制列表属性

-v, --version 显示版本并退出

-h, --help 显示本帮助信息

-:如果文件名是-,则setfacl将从标准输入读取文件名。

选项-m和-x后边跟以acl规则。多条acl规则以逗号(,)隔开。选项-M和-X用来从文件或标准输入读取acl规则。

选项--set和--set-file用来设置文件或目录的acl规则,先前的设定将被覆盖。

选项-m(--modify)和-M(--modify-file)选项修改文件或目录的acl规则。

选项-x(--remove)和-X(--remove-file)选项删除acl规则。

设置ACL访问控制列表:

setfacl -m u:zyq:rwx test.sh

user 对应ACL_USER_OBJ和ACL_USER简写为u

group 对应ACL_GROUP_OBJ和ACL_GROUP简写为g

mask 对应ACL_MASK

other 对应ACL_OTHER简写为o

第二个字段称之为qualifier.也就是上面例子中的zyq和jackuser组.它定义了特定用户和用户组

对于文件的权限.这里我们也可以发现只有user和group才有qualifier,其他的都为空

第三个字段就是我们熟悉的权限了. 它和Linux的权限一样定义,这里就不多讲了

当设置过ACL访问控制权限就会在在文件权限的最后多了一个+号。

chacl

chacl是用来更改文件或目录的访问控制列表的命令。

chacl命令的格式是: chacl acl filename1 filename2

chacl就是一个改变文件存取控制列表的一个命令。

-b 表明这里有两个acl需要修改,前一个acl是文件的acl,后一个是目录的默认acl。

-d 设定目录的默认acl,这个选项是比较有用的。如果指定了目录的默认acl,在这个目录下新建的文件或目录都会继承目录的acl。

-R 只删除文件的acl

-D 只删除目录的默认acl,是-d的反向操作。

-B 删除文件和目录默认的acl。是-b的反向操作。

-r 递归地修改文件和目录的acl权限。

-l 列出文件和目录的acl权限。

使用过ACL之后即使用了setfacl -x删除了所有文件的ACL属性,那个+号还是会出现在文件的末尾.如果不想让他显示则可以使用chacl -B

用cp来复制文件的时候我们现在可以加上-p选项.这样在拷贝文件的时候也将拷贝文件的ACL属性.对于不能拷贝的ACL属性将给出警告

mv命令将会默认地移动文件的ACL属性. 同样如果操作不允许的情况下会给出警告

MASK和effective

ACL_MASK是掌握ACL的另一个关键。ACL_MASK规定了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大权限.当我们设置一个文件的ACL_USER或者ACL_GROUP时,ACL_MASK同时也会被定义,一但文件设置ACL之后文件的用户组权限位就会被替换成ACL_Mask值。

Default ACL

Default ACL是指对于一个目录进行Default ACL设置,并且在此目录下建立的文件都将继承此目录的ACL,ACL定义了default选项, 当某一个用户拥有了default的read, write, excute/search 权限.但是却无法删除和创建文件。如果需要执行权限需要把目录的ACL_USER修改为那个用户后才能在那个目录中删除和创建文件。

linux怎么给目录创建acl,LINUX-ACL文件访问控制列表相关推荐

  1. linux系统创建操作系统用户,linux系统中用户组创建管理linux操作系统 -电脑资料...

    用户组管理包括对用户组创建,删除,修改及查看组操作命令,下面我们一起来看看希望本文章对各位同学会有所帮助哦, 1,创建组 groupadd test 增加一个test组 2,修改组 groupmod ...

  2. linux最上层目录是什么,Linux基础知识之--目录组成结构,当前目录及上层目录表示方法,目录访问权限...

    Linux系统中目录组成结构 • Linux系统的目录组成类拟一个倒置的树型结构,它以一个名为 根("/")的目录开始向下延伸 • 它不同与其它操作系统.例如windows,在 w ...

  3. linux tar压缩包目录,如何在Linux上使用tar命令解压和压缩文件

    inux上的tar命令通常用来创建名为.tar.gz或.tgz的归档文件,也被称为"压缩包".该命令有大量的选择,但你只需要记住几个字母来快速创建tar归档. tar命令可以提取生 ...

  4. busybox linux内核,使用busybox创建精简linux内核实例

    busybox一个二进制程序,模拟实现众多程序./bin/busybox查看本机硬件设备信息:#cat/proc/cpuinfo#cat/proc/meminfo#lsusb显示usb接口信息.#ls ...

  5. linux改变工作目录命令,使用linux cd命令来改变所在目录

    只要你知道所在位置,以及它与你想转换到的位置间的关系,改变所在目录使用linux cd命令是很容易的. 要改变所在目录,使用使用linux cd命令.只使用这个命令本身总是会把你返回到你的主目录:要转 ...

  6. Linux源码目录结构和Linux文件系统目录结构

    学习Linux也有一段时间了,具体来整理一下Linux源码的目录结构和文件系统的目录结构,以便加深记忆. 一.Linux源码的目录结构 首先上一张截图,如下所示: 再看各个文件的介绍,借用一下其他资源 ...

  7. linux查找日期目录,详解Linux查找目录下的按时间过滤的文件

    在维护项目中,有时会指定都一些条件进行过滤文件,并对该批文件进行操作:这时我们将使用shell命令进行操作:直接上代码 #!/bin/sh #BEGIN #`find ./ ! -name " ...

  8. linux中各目录的意思,linux各个目录的意思?

    初学linux,希望了解各个目录到底是什么意思,以便更有效的记忆.比如:/mnt是什么意思?是干什么用的?希望高手能给些资料,不盛感激!! | /bin (binary) 这个目录包含着所有的标准命令 ...

  9. linux 中dev目录,详解Linux系统下的/dev目录

    dev是设备(device)的英文缩写./dev这个目录对所有的用户都十分重要.因为 在这个目录中包含了所有Linux系统中使用的外部设备.但是这里并不是放的外部设备的驱动程序,这一点和windows ...

最新文章

  1. Web3与智能合约交互实战
  2. 将 VMware 最小化到系统托盘
  3. Android之TextView的样式类Span的使用具体解释
  4. common pool2 mysql_用common-pool自定义资源池
  5. springboot配置
  6. .mvn 需要放git上吗_下巴反复长痘,饮食上需要忌口吗?
  7. 四核处理器_2020年高通骁龙处理器排行榜
  8. python找色_[REST API] 用Python实现颜色识别功能----Total Control区域找色
  9. 计算机硬件实验教程pdf,计算机硬件技术基础实验教程答案(重庆大学)
  10. JZOJ 3426. 封印一击
  11. [MATLAB]设置坐标轴标签
  12. 1081 Rational Sum (20 分) 分数计算+最大公约数
  13. Primavera P6 数据字典分享
  14. HTML如何实现简单登录页面
  15. java 504错误怎么解决_前端报504错误如何定位
  16. VBE6EXT.OLB不能被加载问题解决方法
  17. 陈经纶2021年高考成绩查询时间,北京2021高考成绩排名榜单,北京各高中高考成绩喜报...
  18. 2021年西式面点师(初级)及西式面点师(初级)模拟试题
  19. Codeforces Round #700 (Div. 2) C. Searching Local Minimum(交互)
  20. .npmrc给单独包设置源

热门文章

  1. 基于JAVA+SpringBoot+Mybatis+MYSQL的记账本管理系统
  2. 基于JAVA+Servlet+JSP+MYSQL的员工管理系统
  3. 基于JAVA+SpringMVC+Mybatis+MYSQL的论坛管理系统
  4. 企业IT架构转型之道 读书笔记-1.阿里巴巴集团中台战略引发的思考
  5. vim移动一行或一段代码
  6. jQuery全局Ajax事件处理器
  7. 2680 Problem F: Coin Game
  8. 三星如何抄袭苹果 产品对比一目了然
  9. 转:如何把 SQL Server 的自增标志列清零
  10. mysql 5.5.35 单机多实例配置详解_基于mysql-5.5.32的单机多实例多配置文件的