mysql访问控制列表acl_访问控制列表ACL使用说明

一、什么是ACL

ACL(Access Control List)可灵活地,更细粒度地定义访问文件或目录的权限。

二、为什么使用ACL

Linux上文件系统的文件系统权限管理的对象分为三类:owner,group,other。这种分类非常简单,如果我希望有一个用户拥有不同于这三类对象的权限,或者再定义一个用户组的权限,传统的权限管理就不能实现,而ACL可以很好的解决这个问题。

三、ACL条目

一系列ACL条目构成了ACL。条目应包含标签类型(tag type),可选择的标签修饰定语,以及权限设定。

其中标签类型分为:

1.acl_user_obj:  文件的属主

2.acl_user:     自定义用户

3.acl_group_obj:  文件的所属组

4.acl_group:    自定义用户组

5.acl_mask:    规定了acl_user,acl_group_obj,acl_group可被授予的最大权限

6.acl_other:    不在acl里定义的其他用户

[root@centos7 data]# getfacl f1

# file: f1

# owner: root

# group: mysql

user::rwx                #acl_user_obj

user:cutemsyu:rw-        #acl_user

group::r-x               #acl_group_obj          #effective:r--

group:cutemsyu:rw-       #acl_group

group:fly:r--            #acl_group

mask::rw-                #acl_mask

other::---               #acl_other

tag type 可简写,如u表示user,g表示group。

四、ACL设置和查看方法

setfacl :设置    getfacl :查看

格式:setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file …

getfacl [-aceEsRLPtpndvh] file …

1、直接设置模式:

-m :修改权限

-x :移除权限

–set:设置权限,取代原来的acl权限设置,必需包含u,g,o的tag type

例如,修改权限并查看

[root@centos7 testdir]# setfacl -m u:cutemsyu:r,g:cutemsyu:r example

[root@centos7 testdir]# getfacl example

# file: example

# owner: root

# group: root

user::rw-

user:cutemsyu:r--

group::r--

group:cutemsyu:r--

mask::r--

other::r--

移除权限并查看

[root@centos7 testdir]# setfacl -x g:cutemsyu example

[root@centos7 testdir]# getfacl example

# file: example

# owner: root

# group: root

user::rw-

user:cutemsyu:r--

group::r--

mask::r--

other::r--

2、通过文件设置

ACL支持读取文件来设置权限

-M:修改权限

-X:移除权限

这里我给出一个文本acl_file,

[root@centos7 testdir]# cat acl_file

u:cutemsyu:rw         #一行只能写一个条目

u:fly:rw

g:cutemsyu:r

修改权限并查看

[root@centos7 testdir]# touch example2

[root@centos7 testdir]# setfacl -M acl_file example2

[root@centos7 testdir]# getfacl example2

# file: example2

# owner: root

# group: root

user::rw-

user:cutemsyu:rw-

user:fly:rw-

group::r--

group:cutemsyu:r--

mask::rw-

other::r--

再创建一个文本用来移除权限

[root@centos7 testdir]# cat acl_file_remove

u:cutemsyu

u:fly

g:cutemsyu

移除权限并查看

[root@centos7 testdir]# setfacl -X acl_file_remove example2

[root@centos7 testdir]# getfacl example2

# file: example2

# owner: root

# group: root

user::rw-

group::r--

mask::r--

other::r--

3、为目录设置ACL

为目录设置ACL,设置方法相同,可用-R进行递归

另外目录的ACL可加默认权限,不作用于目录本身,表示再此目录下新建的文件或目录继承默认权限

例如:

[root@centos7 testdir]# setfacl -m o::-,u:fly:rwx,d:u:fly:rwx test/   #d:表示默认权限

[root@centos7 testdir]# getfacl test/

# file: test/

# owner: root

# group: root

user::rwx

user:fly:rwx

group::r-x

mask::rwx

other::---

default:user::rwx                   #未定义的默认tag type会跟随目录相应权限

default:user:fly:rwx

default:group::r-x

default:mask::rwx

default:other::---

在此目录下新建目录和文件,查看ACL

[root@centos7 test]# mkdir dir1;touch file1;

[root@centos7 test]# getfacl dir1 file1

# file: dir1

# owner: root

# group: root

user::rwx

user:fly:rwx

group::r-x

mask::rwx

other::---

default:user::rwx

default:user:fly:rwx

default:group::r-x

default:mask::rwx

default:other::---

# file: file1

# owner: root

# group: root

user::rw-

user:fly:rwx#effective:rw-

group::r-x#effective:r--

mask::rw-           #文件mask不继承x权限

other::---

4、复制一个文件的ACL

setfacl 支持管道输入 –set-file=-

getfacl file1|setfacl --set-file=- example      #复制file1权限到example

5、备份和恢复ACL

mv和cp备份文件时都会保留ACL信息,cp指令需加-p选项

但是tar等工具工具备份文件时不会保留ACL信息,这时需要我们备份ACL信息

getfacl -R /testdir/data  >acl.bak         #递归备份ACL信息

setfacl -R --set-file=acl.bak /testdir/data        #递归恢复ACL信息

6、清除ACL

setfacl -k dir       #清除默认acl设置

setfacl -b file      #清除所有acl设置

五、ACL和文件权限位的关系

设置ACL的文件或目录,ls -l 查看权限位最后的 "."会变成"+"

drwxrwx---+ 2 root root 6 Aug  6 10:32 dir1

owner位与ACL中acl_user_obj 对应

group位与ACL中acl_mask对应

other位与ACL中acl_other对应

六、ACL权限允许访问逻辑

当一个线程访问一个被ACL保护的文件时,其获权逻辑如下:

1.当线程的有效用户ID与文件owner相匹配时,如果owner拥有相应权限,则允许访问,否则拒绝。

2.当线程的有效用户ID与acl_user相匹配时,如果mask和acl_user都具有相应权限则允许访问,否则拒绝。

3.当线程的有效组ID或者补充组ID与文件所属组或任意acl_group相匹配时,

(1)当ACL含有mask条目时

如果mask和任何匹配的组拥有相应权限,则允许访问,否则拒绝

(2)当ACL不含有mask条目时

如果文件所属组拥有相应权限,则允许访问,否则拒绝

4.如果acl_other拥有相应权限,则允许访问

5.其他则拒绝

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

你可能感兴趣的:(mysql访问控制列表acl)