文件的权限详解(二)ACL篇

文件的权限详解(二)ACL篇

ACL访问控制列表作用

1、 ACL:Access Control List,实现灵活的权限管理
2、 除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
3、 CentOS7.0默认创建的xfs和ext4文件系统有ACL功能。
4、 CentOS7.X之前版本,默认手工创建的ext4文件系统无ACL功能。需手动增加:

tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1  /mnt

5、 ACL生效顺序:所有者,自定义用户,自定义组,其他人

 ACL使用两个命令来对其进行控制

 getfacl:取得某个文件/目录的ACL设置项目
 setfacl:设置某个文件/目录的ACL设置项目

setfacl命令

作用:设置文件访问控制列表的命令
语 法:
格 式1:setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file…
格 式2:setfacl  –restore=file

参 数:

  • -m设置后续acl参数

    setfacl  -m u:wang:rwx file|directory  设置wang用户对文件或目录具有读写执行权限
    setfacl  -m g:salesgroup:rw file| directory  设置组用户对文件或目录的读写执行权限
  • -x删除后续acl参数

         setfacl  -x u:wang file |directory  删除wang用户对文件的访问限制
  • b,–remove-all:删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留。

                setfacl -b file1清除所有ACL权限
  • k,–remove-default:删除缺省的acl规则。如果没有缺省规则,将不提示。

     setfacl -k dir 删除默认ACL权限
  • m重新计算有效权限,即使ACL mask被明确指定。

  • d,--default:设定默认的acl规则;以后这个目录下创建的文件都将具有此权限

        setfacl  -m d:u:wang:rx directory
  • -R,–recursive:递归的对目前该目录下所有文件及目录进行操作

        setfacl  -Rm g:sales:rwX directory
  • –  getfacl file1 | setfacl –set-file=- file2  复制file1的acl权限给file2

  • –restore=file:从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除–test以外的任何参数一同执行

-n      ,–no-mask:不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定。
-L      ,–logical:跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录。
-P      ,–physical:跳过所有符号链接,包括符号链接文件。
–test    :测试模式,不会改变任何文件的acl规则,操作后的acl规格将被列出。


    标识命令行参数结束,其后的所有参数都将被认为是文件名。

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

其他:

以文本文件方式批量设置acl权限 -M

[root@localhost qiuzhaoxian]# cat acl.test 
u:qzx:---
u:user1:rwx
u:user2:r
u:user3:7
g:gentoo:0
g:user4:rx
[root@localhost qiuzhaoxian]# setfacl -M acl.test 123
[root@localhost qiuzhaoxian]# getfacl 123
# file: 123
# owner: xiaoming
# group: xiaoming
user::rwx
user:qzx:---
user:user1:rwx
user:user2:r--
user:user3:rwx
group::rwx
group:user4:r-x
group:gentoo:---
mask::rwx
other::---

– X 以文本方式批量删除文件acl(本来有删除对应的acl权限)acl权限

[root@localhost qiuzhaoxian]# cat bbb.test 
u:user1
u:user2
u:user3
[root@localhost qiuzhaoxian]# setfacl -X bbb.test 123
[root@localhost qiuzhaoxian]# getfacl 123
# file: 123
# owner: xiaoming
# group: xiaoming
user::rwx
user:qzx:---
group::rwx
group:user4:r-x
group:gentoo:---
mask::rwx
other::---

以参考文件的acl权限设置目标文件

[root@localhost qiuzhaoxian]# mkdir 456
[root@localhost qiuzhaoxian]# getfacl 123 | setfacl --set-file=- 456
[root@localhost qiuzhaoxian]# getfacl 456
# file: 456
# owner: root
# group: root
user::rwx
user:qzx:---
group::rwx
group:user4:r-x
group:gentoo:---
mask::rwx
other::---

注:setfacl –set-file= 这里的=后边的-表示从标准输入读取文件
这里的- 可以换成文件(当备份恢复时用)

–set选项会把原有的ACL项都删除,用新的替代,需要注意的
是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以.
如:
 setfacl –set u : : rw , u : qzx: rw , g : : r , o::- file1

备份和恢复ACL

#getfacl -R /tmp/dir1 > acl.txt#setfacl -R -b /tmp/dir1
#setfacl -R  --set-file=acl.txt /tmp/dir1#getfacl -R /tmp/dir1

关于mask

mask只影响除所有者和other的之外的人和组的最大权限
Mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限

一旦设置acl mask后 所属组权限就变成mask权限
也就是说用chmod g=wx  文件  那么mask也将编程wx

用户或组的设置必须存在于mask权限设定范围内才会生效。
设置方式

setfacl -m mask::rx file

原创文章,作者:qzx,如若转载,请注明出处:http://www.178linux.com/28909

(0)
上一篇 2016-08-05 16:09
下一篇 2016-08-05 16:09

相关推荐

  • Linux平台的4个最佳开源代码编辑器

    原文出处: Abhishek   译文出处:Linux中国 su-kaiyao   正在寻找Linux平台最棒的代码编辑器?如果你询问那些很早就玩Linux的人,他们会回答是Vi, Vim, Emacs, Nano等。但是,我今天不讨论那些。我将谈论一些新时代尖端、漂亮、时髦而且十分强大, 功能丰富…

    Linux干货 2015-03-02
  • By the use of research proposal writing service should really simplify the actual ensure which your proposal is taught in time

    You ought to get this help linked with experts research proposal writing service A research proposal is an important stage for almost any assignment. It ought to be penned in a ade…

    Linux干货 2022-12-19
  • Linux文件系统

    Linux文件系统 根目录下的文件 / ├── bin 存放用户使用的基本命令(可执行程序,二进制文件) 不能单独分区的 ├── boot 跟内核有关的文件 grub 内核和BootLoader ├── cgroup 用来资源限制资源隔离 docker 容器化 ├── dev device 设备文件 b block device 块设备 硬盘或者CD-rom…

    Linux干货 2017-04-01
  • 2016-08-10作业

    1、编写脚本/root/bin/systeminfo.sh, 显示当前主机系统信息,包括主机名,IPv4 地址,操作系统版本,内核版本,CPU 型号,内存大小,硬盘大小。 #!/bin/bash echo "hostname is `hostname`" echo "IPv4 is `ifconfig | sed -n &#03…

    Linux干货 2016-08-15
  • Shell 脚本作业(8月11号)

    1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。 #!/bin/bash # author:huiping # version:1.0.1 # date:2016-08-11 # describe:&nb…

    Linux干货 2016-08-15
  • Python函数式编程指南(二):函数

    这是此系列的第二篇,试图说明在Python中如何更好地使用函数并引导诸位使用函数式的思维进行思考。掌握并应用这些内容,就已经是至少形似的函数式风格的代码了,至于思维么,这个真靠自己。 作者水平有限,如有错漏之处还请指出;转载请注明原作者和原地址:) 2. 从函数开始 2.1. 定义一个函数 如下定义了一个求和函数: def add(x, y): return…

    Linux干货 2015-03-11