ACL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ACL相关的知识,希望对你有一定的参考价值。

ACL

    linux的ACL权限是给一个文件或者目录添加指定的用户或者组,然后给其对应的权限。

一、权限的开启

   CentOS7当中,无论是操作系统安装时还是之后手工创建的文件系统(xfs、ext4)均会默认开启ACL功能。

   CentOS6及之前的版本,仅操作系统安装时创建的文件系统才会默认开启ACL,手工创建的文件系统,需要手工开启ACL功能。

   临时开启方法:1、挂载时指定开启acl,即mount -o acl 文件系统名 挂载点

               或者重新挂载 mount -o remount,acl 文件系统名/挂载点

             2、修改信息 tune2fs -o acl 文件系统名

   永久开启方法:编辑/etc/fstab,在该条目对应的defaults后面加上 ,acl

             重启或者重新挂载可生效

二、ACL权限判断的顺序

先判断是否是文件的OWNER,如果是,则执行OWNER的权限后结束,如果不是OWNER,则判断是否是ACL的USER,如果是则执行USER权限后结束,如果不是ACL的USER, 则判断是否属于GROUP或ACL GROUP,如果是,则取最大权限(即该权限与mask权限相与)。如果不属于任何GROUP,则执行OTHER。

顺序:所有人->所有组->其他人

三、设置ACL

setfacl -m u:liubei:rx f1  给用户liubei设置ACL权限,使其对f1具有rx权限

setfacl -m g:shuguo:rwx f1  给shuguo组设置ACL权限,使其组中的用户对f1具有rwx权限

getfacl 文件/目录  显示权限信息

getfacl -R 目录   递归显示目录及其文件信息


setfacl -m mask:rwx f1 相当于 chmod g=rwx f1   修改MASK值

  一旦设置了ACL权限后,原有的文件GROUP权限不可再更改,使用chmod即修改ACL MASK

  ACL MASK随着新的ACL设置会被重置,重置的标准是让该文件上的所有ACL及文件原GROUP上的权限都有效。

  mask只影响除所有者和other之外的人和组。

setfacl -Rm u:zhangfei:rwx acltest/   递归设置

setfacl -x u:liubei f1  单独去除一条ACL权限

setfacl -b f1 去除该文件上ACL属性。


在/app目录下创建一个名为d1的目录,要求其owner,group均为root,权限设置为755。要求guanyu用户对该目录及所有用户在其下创建的新文件新目录均有rwx权限

 答:chown root:root d1  ; chmod 755 d1 ; 

    对该目录有rwx权限需要setfacl -m u:guanyu:rwx d1

    对其下创建的文件有rwx权限需要setfacl -m d:u:guanyu:rwx d1


setfacl -m d:u:guanyu:rwx d1  d表示设置ACL默认权限,仅影响新创建的文件及目录,不影响当前。

setfacl -x d:sunquan d1 删除一条默认权限

setfacl -k d1 删除全部默认权限

setfacl -b d1 删除全部ACL属性


getfacl -R /tmp/dir1 > acl.txt  将目录下的所有文件的ACL属性备份到文件

setfacl -R -b /tmp/dir1 清除目录下所有文件的ACL属性

setfacl -R --set-file=acl.txt /tmp/dir1   通过文件还原ACL属性的方法1

setfacl --restore acl.txt    通过文件还原ACL属性的方法2


1、在/testdir/dir里创建的新文件自动属于g1组,组

g2的成员如:alice能对这些新文件有读写权限,组g3

的成员如:tom只能对新文件有读权限,其它用户(不

属于g1,g2,g3)不能访问这个文件夹。


[[email protected] ~]# mkdir -p /testdir/dir

[[email protected] ~]# groupadd g1

[[email protected] ~]# groupadd g2

[[email protected] ~]# groupadd g3

[[email protected] ~]# useradd -G g2 alice

[[email protected] ~]# useradd -G g3 tom

[[email protected] ~]# ls -ld /testdir/dir/

drwxr-xr-x. 2 root root 6 Jul 26 15:06 /testdir/dir/

[[email protected] ~]# chgrp g1 /testdir/dir/

[[email protected] ~]# chmod g+s /testdir/dir/

[[email protected] ~]# ls -ld /testdir/dir/   

drwxr-sr-x. 2 root g1 6 Jul 26 15:06 /testdir/dir/

[[email protected] ~]# chmod o=- /testdir/dir/

[[email protected] ~]# ls -ld /testdir/dir/   

drwxr-s---. 2 root g1 6 Jul 26 15:06 /testdir/dir/

[[email protected] ~]# setfacl -m g:g2:rx,g:g3:rx /testdir/dir/

[[email protected] ~]# setfacl -m d:g:g2:rw,d:g:g3:r /testdir/dir/ 


以上是关于ACL的主要内容,如果未能解决你的问题,请参考以下文章

ACL

标准ACL扩展ACL和命名ACL的配置详解

Cisco基础:配置标准ACL配置扩展ACL配置标准命名ACL配置扩展命名ACL

基本ACL和高级ACL

基本ACL和高级ACL

基本ACL和高级ACL