linux中setfacl命令,Linux命令之:setfacl和getfacl

linux中setfacl命令,Linux命令之:setfacl和getfacl命令总结之:setfacl和getfaclacl:accesscontrollist,实现灵活的权限管理除了文件的所有者,所属组合其他人,可以对更多的用户设置权限acl生效顺序:所有者、自定义用户、自定义组、其他人1、首先我们查看man帮助文档说明[root@centos7sixijie]#mansetfacl根据man文档节选出来几个我们会经常用到的功能和选项加以说明:setfacl…

大家好,又见面了,我是你们的朋友全栈君。

命令总结之:setfacl和getfacl

acl:access control list,实现灵活的权限管理

除了文件的所有者,所属组合其他人,可以对更多的用户设置权限

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

1、首先我们查看man帮助文档说明

[root@centos7 sixijie]# man setfacl

根据man文档节选出来几个我们会经常用到的功能和选项加以说明:

setfacl – set file access control lists

The –set and –set-file options set the ACL of a file or a directory. The previous ACL is replaced.   ACL  entries

for this operation must include permissions

The -m (–modify) and -M (–modify-file) options modify the ACL of a file or directory.  ACL entries for this oper‐

ation must include permissions.

The -x (–remove) and -X (–remove-file) options remove ACL entries. It is not an error to remove  an  entry  which

does  not  exist.   Only  ACL entries without the perms field are accepted as parameters, unless POSIXLY_CORRECT is

defined.

-b, –remove-all

Remove all extended ACL entries. The base ACL entries of the owner, group and others are retained.

-k, –remove-default

Remove the Default ACL. If no Default ACL exists, no warnings are issued.

-R, –recursive

Apply operations to all files and directories recursively. This option cannot be mixed with `–restore’.

–   If the file name parameter is a single dash, setfacl reads a list of files from standard input.

2、-m和-x选项分别为modify(设定)和remove(移除)acl权限

[root@centos7 sixijie]# setfacl -m u:sixijie:rwx f1

[root@centos7 sixijie]# getfacl f1

[root@centos7 sixijie]# setfacl -x u:sixijie f1

[root@centos7 sixijie]# getfacl f1

3c8ce6380daa33c267ccb0e2e66a02de.png 

3c8ce6380daa33c267ccb0e2e66a02de.png

3、-M和-X选项可以通过文件批量设定acl和移除acl

acl.txt:

u:user1:rw

u:user2:r

u:user3:rwx

[root@centos7 sixijie]# setfacl -M acl.txt f1

[root@centos7 sixijie]# getfacl f1

3c8ce6380daa33c267ccb0e2e66a02de.png

acl.del

u:user1

u:user2

[root@centos7 sixijie]# setfacl -X acl.del f1

[root@centos7 sixijie]# getfacl f1

3c8ce6380daa33c267ccb0e2e66a02de.png

4、–set和–set-file选项:

注意:–set和–set-file会把原有的ACL表项都删除

–set-file

man手册中有这样一句话:

Copying the ACL of one file to another

getfacl file1 | setfacl –set-file=- file2

因此

[root@centos7 sixijie]# getfacl f1 | setfacl –set-file=- f2

上述命令即复制f1的ACL给f2

[root@centos7 sixijie]# getfacl f2

3c8ce6380daa33c267ccb0e2e66a02de.png

–set选项

注:一定要包含UGO的设置

[root@centos7 sixijie]# setfacl –set u::rw,u:sixijie:rwx,g::r,o::rw f1

[root@centos7 sixijie]# getfacl f1

3c8ce6380daa33c267ccb0e2e66a02de.png

5、-b选项:清除所有ACL权限

[root@centos7 sixijie]# setfacl -b f1

[root@centos7 sixijie]# getfacl f1

3c8ce6380daa33c267ccb0e2e66a02de.png

6、设置默认的ACL权限及其删除

(1)设置默认ACL 一般只针对目录

[root@centos7 sixijie]# setfacl -m d:u:sixijie:rw,d:g:hadoop:r dir1

[root@centos7 sixijie]# getfacl dir1

3c8ce6380daa33c267ccb0e2e66a02de.png

(2)我们在dir1/目录下创建一个文件和目录

[root@centos7 sixijie]# cd dir1/

[root@centos7 dir1]# touch f3

[root@centos7 dir1]# mkdir d2

[root@centos7 dir1]# getfacl f3

[root@centos7 dir1]# getfacl d2

3c8ce6380daa33c267ccb0e2e66a02de.png

我们可以看到dir1目录下的文件及其子目录继承了父目录dir1的ACL权限,这就叫做默认的ACL

删除的方法很简单:一个-k选项即可

[root@centos7 sixijie]# setfacl -k dir1/

[root@centos7 sixijie]# getfacl dir1/

3c8ce6380daa33c267ccb0e2e66a02de.png

7、mask介绍

[root@centos7 tmp]# man acl

节选其中的一段话:acl_mask条目表示最大的访问权限

ACL_MASK        The ACL_MASK entry denotes the maximum access rights

that can be granted by entries of type ACL_USER, ACL_GROUP_OBJ, or ACL_GROUP.

所以我们可以在getfacl中看到这样的条目:effective:Mode

[root@centos7 ~]# setfacl -m u:sixijie:rx,g:user1:rwx f1

[root@centos7 ~]# getfacl f1

设置mask

[root@centos7 ~]# setfacl -m m:r f1

[root@centos7 ~]# getfacl f1

3c8ce6380daa33c267ccb0e2e66a02de.png

可见自定义用户,自定义组及其所属组的权限不能大于mask设置的权限

一个小的知识点:setfacl和chmod设置的所属组的权限可以相互覆盖,当二者设置的权限不一致时,以使用getfacl看到的“#effective:”后的权限为准

8、备份和恢复ACL

主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息

方法如下:

[root@centos7 ~]# getfacl -R /tmp/dir1 > acl.txt

[root@centos7 ~]# setfacl -R -b /tmp/dir1

[root@centos7 ~]# setfacl -R –set-file=acl.txt /tmp/dir1

[root@centos7 ~]# getfacl -R /tmp/dir1

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150702.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Spring的静态代理与动态代理[通俗易懂]

    Spring的静态代理与动态代理[通俗易懂]简述AOP是可以横向扩展功能的,能够在不修改原来代码的前提下实现功能扩展,AOP的实现原理即是动态代理+反射。为什么要使用代理1.什么是代理  代理即是将被代理对象进一步封装后,隐藏被代理对象,在不修改被代理对象代码的前提下完成一些额外的处理。2.场景描述  有一个BookService类,其中有一个add方法,现在想在执行hello方法之前打印一句话,例如是打印”…

    2022年10月17日
    0
  • 二叉树的层序遍历(两种方法实现)

    二叉树的层序遍历(两种方法实现)两种方法实现二叉树的层序遍历1、说明二叉树的层序遍历是面试经常会被考察的知识点,甚至要求当场写出实现过程。层序遍历所要解决的问题很好理解,就是按二叉树从上到下,从左到右依次打印每个节点中存储的数据。如下图:先序遍历:A→B→D→C中序遍历:B→D→A→C后续遍历:D→B→C→A层序遍历:A→B→C→…

    2022年5月11日
    36
  • 测试后台管理系统思路和方法

    测试后台管理系统思路和方法每个公司不管做什么业务,开发网站,app或者公众号亦或小程序,但凡涉及到用户信息或者订单信息都有对应的后台管理系统,所以每个测试人员基本上都有测试过后台管理系统的经验,但是后台管理系统测试不仅仅是基本的增删改查测试,还需要进行业务逻辑测试,还有兼容性测试,接口测试和压力测试。下面是我总结的测试思路和方法,可能有很多不足之处,希望多多评论补充第一步,分析需求文档和原型图,原型图最好看有交互效果的…

    2022年5月11日
    53
  • python运维实战pdf_python运维实例.pdf[通俗易懂]

    python运维实战pdf_python运维实例.pdf[通俗易懂]python运维实例第一部分Part1基础篇■第1章系统基础信息模块详解■第2章业务服务监控详解■第3章定制业务质量报表详解■第4章Python与系统安全Chapter1第1章系统基础信息模块详解系统基础信息采集模块作为监控模块的重要组成部分,能够帮助运维人员了解当前系统的健康程度,同时也是衡量业务的服务质量的依据,比如系统资源吃紧,会直接影响业务的服务质…

    2022年7月12日
    13
  • snmp trap服务_SNMP服务

    snmp trap服务_SNMP服务浅谈Linux中开发SNMPTrapSNMPTrap是一种标准的报告机制,广泛应用在各种网络管理软件中。本文详细介绍了SNMPTrap的基本概念,以及Linux下面net-snmp对SNMPTrap的开发与应用。1.SNMPTrap简介SNMP简单网络管理协议(SimpleNetworkManagementProtocol)是一种应用层协议,是TCP/IP协议族的一部分。它使网络设备之间能…

    2022年8月22日
    5
  • linux修改用户名密码的命令_centos7修改用户名密码

    linux修改用户名密码的命令_centos7修改用户名密码1、更改密码:普通:passwdroot:sudopasswd2、更改用户名:方法一:只在当前终端生效exportPS1=’用户名’方法二:修改初始化文件,永久生效1、执行命令cd~vi.bashrc2、在最后一行加:exportPS1=’新用户名:’3、保存退出4、执行命令:source .bashrc修改完成。 …

    2022年9月18日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号