文件的权限详解(二)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)
qzxqzx
上一篇 2016-08-05
下一篇 2016-08-05

相关推荐

  • Linux进程管理-初级

    Linux进程管理-初级 背景: 在学习完Linux进程管理后,发现这一块的知识点比较多,很多都是自己以前没有接触过的,而且这部分知识对今后的工作有很大帮助,在这里做个学习的总结,供以后复习。 进程介绍: 什么是进程 进程(Process):运行中的程序的一个副本,是被载入内存的一个指令集合,进程有进程ID(Process ID,PID),用来标记每个进程,…

    2017-08-26
  • sed文本处理工具

    Sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转…

    Linux干货 2017-12-02
  • keepalived+lvs-dr实现高可用负载均衡

    keepalived+lvs-dr实现高可用负载均衡 实验拓扑 实验要求 RS1与RS2地址为172.18.27.201/202 VS1和VS2地址为172.18.27.103/200,VIP为172.18.27.254 VS1和VS2实现lvs-dr负载均衡及高可用性,且vs为sorry sever。 keepalived是单主模式。 实验步骤 各个主机安…

    2017-05-14
  • 推荐-自动化运维之puppet小试牛刀

     一、puppet介绍       puppet是IT基础设施自动化管理工具,“她”能够帮助系统管理员管理基础设施的整个生命周期:供应(provisioning、配置(configuration)、联动(orchestration)及报告(reporting)。    …

    Linux干货 2016-04-05
  • mysql主从复制

    MySQL主从复制        主从复制原理: mysql主从同步其实是一个异步复制的过程,要实现复制首先在master上开启bin-log日志功能。整个过程需要开启3个线程, 分别是master开启IO线程,slave开启IO线程和SQL线程. (1) 在slave服务器执行start…

    Linux干货 2016-06-26
  • 第五周作业

    1、显示当前系统上root,fedora或user1用户的默认shell。 [root@hostname ~]# grep -E ‘^(root|fedora|user1)’ /etc/passwd | cut -d: -f1,7 root:/bin/bash 2、找出/etc/rc.d/init.d/functions文件中某词后面跟一组小括号的行,形如:…

    Linux干货 2017-08-04