概念

ACL是Access Control List(访问控制列表)的缩写,用于linux简单的用户权限管制当中。

Cent7零碎之前,只有零碎装置时创立的文件系统反对ACL,起初创立的文件系统则不反对。

Cent7零碎后,不论文件系统是否在装置零碎时被建设,都反对ACL。

 

命令

getfacl:用于查看ACL权限。

setfacl:用于设置ACL权限。

 

用法

1. 查看文件或目录权限

getfacl 文件/文件夹名

[root@vm1 ~]# getfacl ~getfacl: Removing leading '/' from absolute path names# file: root# owner: root# group: rootuser::r-xgroup::r-xother::---

 

2. 批改用户对文件或目录的权限

setfacl -m u:uname:access 文件/文件夹名

[root@vm1 ~]# setfacl -m u:young:rwx -R ~   #将/root的权限赋予young[root@vm1 ~]# getfacl ~getfacl: Removing leading '/' from absolute path names# file: root# owner: root# group: rootuser::r-xuser:young:rwxgroup::r-xmask::rwxother::---

我将我集体对/root文件夹的拜访权限改成了可读可写,而组内用户有读权限,组外用户无任何权限。

接下来进行测试:

[young@vm1 root]$ dd if=/dev/zero of=/root/testfile bs=1M count=20 #创立一个测试文件记录了20+0 的读入记录了20+0 的写出20971520字节(21 MB)已复制,0.0154888 秒,1.4 GB/秒[young@vm1 root]$ ll|grep testfile -rw-rw-r--  1 young young 20971520 8月  30 01:49 testfile[young@vm1 root]$ id nobodyuid=99(nobody) gid=99(nobody) 组=99(nobody)

确实,young用户因为被赋权。所以能够在/root目录下进行读写;而nobody用户因为未被赋权,且不在root组内,故什么权限都没有。

测试结束后,咱们应用setfacl -b /root勾销方才增加的ACL权限。

[root@vm1 ~]# setfacl -b /root[root@vm1 ~]# getfacl ~getfacl: Removing leading '/' from absolute path names# file: root# owner: root# group: rootuser::r-xgroup::r-xother::---

 

3. 批改组对文件或目录的权限:

setfacl g:gid:access 文件/目录门路,用法与给用户赋权统一,故不再赘述。

 

4. 挪动/复制文件或目录时须要留神的点:

挪动文件/目录时,默认连带ACL权限一起挪动。

复制文件时,默认不保留权限;须要加应用cp -p命令,才保留权限。

 

5. 挂载时须要留神的点:

如原来的文件系统不反对ACL权限,咱们能够将其从新挂载。

mount -o remount, acl 挂载点