[RH134] 5-ACL

1.Linux ACL

ACL:访问控制列表。

ACL可以对文件的访问权限做更细粒度的设置。

1)获取某个文件的权限信息

[root@centos7 etc]# getfacl hosts     
# file: hosts
# owner: root
# group: root
user::rw-
group::r--
other::r--

可以看到/etc/hosts的user、group、other的权限。

2)对某个单独用户设置单独的文件权限

[root@centos7 test]# setfacl -m u:leo:rw- hosts

给用户leo单独设置hosts的读写权限。添加权限使用"-m"选项。

[root@centos7 test]# getfacl hosts
# file: hosts
# owner: root
# group: root
user::rw-
user:leo:rw-
group::r--
mask::rw-
other::r--

可以看到,单独的一条针对用户leo对应hosts文件的权限。

此时,我们看hosts文件的权限:

[root@centos7 test]# ll
total 4
-rw-rw-r--+ 1 root root 158 Mar 24 11:00 hosts

可以看到后面多了一个"+"号,这个"+"号表示权限可以展开,意思是除了原本的user、group、other权限,现在还有额外的细粒度权限。

3)删除权限

[root@centos7 test]# setfacl -x u:leo hosts

删除权限,使用"-x"选项。

4)添加某个单独组的权限

[root@centos7 test]# setfacl -m g:leo:r-- hosts
[root@centos7 test]# getfacl hosts
# file: hosts
# owner: root
# group: root
user::rw-
group::r--
group:leo:r--
mask::r--
other::r--

删除:

[root@centos7 test]# setfacl -x g:leo hosts

2.mask权限设置

当我们想要在某个时间段让某个文件对所有用户都实行一个权限,则使用mask权限(相当于在其上加一层遮罩)。

我们查看hosts文件的权限的时候,可以看到一个默认的mask权限条目:

[root@centos7 test]# getfacl hosts         
# file: hosts
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::r--

这个mask权限主要对单独的权限条目起掩盖作用。例如,leo用户有个单独的读写权限:

[root@centos7 test]# getfacl hosts             
# file: hosts
# owner: root
# group: root
user::rw-
user:leo:rw-
group::r--
mask::rw-
other::r--

此时,可以看到mask权限自动变为"rw-"权限。如果我们修改mask权限为"r--",即权限小于之前的权限:

[root@centos7 test]# setfacl -m m::r-- hosts    
[root@centos7 test]# getfacl hosts          
# file: hosts
# owner: root
# group: root
user::rw-
user:leo:rw-                    #effective:r--
group::r--
mask::r--
other::r--

可以看到,leo用户单独权限被限制在了"r--",此时的leo用户无法对hosts进行写入操作了。

但这个#effective权限是临时的,如果我们对任意权限条目进行修改(例如使用setfacl命令),则mask权限失效,变回原本的权限(rw-,此时不会影响其他权限)。

3.默认权限

针对目录的权限设置。

默认权限的意思是设置某个目录中创建的新文件对某个目标有一个默认的权限(预先指定一个默认权限,对所有新创文件有效)。

例如,我们有个/opt/test目录:

[root@centos7 opt]# getfacl test     
# file: test
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

这个目录对于用户leo来说,可以进入test目录,但无法在其中创建文件,因为(other)没有写权限:

[leo@centos7 test]$ touch aa
touch: cannot touch ‘aa’: Permission denied

我们为test目录创建一个默认权限:

[root@centos7 opt]# setfacl -m d:u:leo:rwx test

再看test的权限:

[root@centos7 opt]# getfacl test
# file: test
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:leo:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

这个默认权限的意思是,不管谁在test目录下创建文件或目录,对于leo用户来说都是"rwx"权限的。但是test目录本身的权限对于leo用户还是"r-x",即不能在其中创建文件或目录。

 

===

posted @ 2020-03-25 16:25  风间悠香  阅读(162)  评论(0编辑  收藏  举报