在文件或目录配置了ACL后,如果使用cp命令复制时要保留ACL必须使用“-p”选项,如果使用mv命令移动时默认就会保留ACL。当然前题是目标目录所有分区支持ACL功能。下面看几个setfacl命令的例子。

(1)      配置用户ACL

l  目前还没有学习如何建立分区,所以利用现有分区中的tmp目录。

[root@srv ~]# cd /tmp    

l  当前目录目前情况。

[root@srv tmp]# ll

total 8

drwxr-xr-x 2 root root 4096 Feb 16 17:15 fringe

drwxr-xr-x 2 root root 4096 Feb 16 17:14 ada

l  配置用户charles对目录fringe有可读、可写权限。

[root@srv tmp]# setfacl -m u:charles:rw fringe/

l  配置用户charles对目录ada有可读、可写、可执行权限。

[root@srv tmp]# setfacl -m u:charles:7 ada/

l  浏览目录时,在权限最后一位是一个“+”表示这二个目录配置了ACL

[root@srv tmp]# ll

total 16

drwxrwxr-x+ 2 root root 4096 Feb 16 17:15 fringe

drwxrwxr-x+ 2 root root 4096 Feb 16 17:14 ada

l  切换到用户charles

[root@srv tmp]# su - charles  

[charles@srv ~]$ cd /tmp/ada/

l  在目录ada有写权限了。

[charles@srv ada]$ touch Andy    

(2)      配置用户默认ACL

l  目前还没有学习如何建立分区,所以利用现有分区中的tmp目录。

[root@srv ~]# cd /tmp    

l  当前目录目前情况。

[root@srv tmp]# ll

total 4

drwxr-xrwx 2 root root 4096 Feb 16 19:53 ada

l  配置用户andy对目录ada的默认ACL是有可读、可写、可执行,当用户andy在目录ada中建立子目录或文件时,会自动继承这个ACL

[root@srv tmp]# setfacl -m d:u:andy:rwx ada/

l  浏览目录在权限最后一位是一个“+”表示这二个目录配置了ACL

[root@srv tmp]# ll     

total 8

drwxr-xrwx+ 2 root root 4096 Feb 16 19:53 ada

l  切换到用户andy

[root@srv tmp]# su - Andy     

[andy@srv ~]$ cd /tmp/ada/

[andy@srv ada]$ mkdir season6

l  建立的子目录自动继承了ACL

[andy@srv ada]$ ll          

total 8

drwxrwxrwx+ 2 andy andy 4096 Feb 16 20:03 season6

(3)      配置用户组ACL

l  目前还没有学习如何建立分区,所以利用现有分区中的tmp目录。

[root@srv ~]# cd /tmp    

l  当前目录目前情况。

[root@srv tmp]# ll

total 8

drwxr-xr-x 2 root root 4096 Feb 16 17:24 24

drwxr-xr-x 2 root root 4096 Feb 16 17:24 csi

l  配置用户组ctu对目录24有可读、可写、可执行权限。

[root@srv tmp]# setfacl -m g:ctu:rwx 24

l  配置用户组ctu对目录csi没有任何权限。

[root@srv tmp]# setfacl -m g:ctu:--- csi  

l  浏览目录时,在权限最后一位是一个“+”表示这二个目录配置了ACL

[root@srv tmp]# ll

total 16

drwxrwxr-x+ 2 root root 4096 Feb 16 17:24 24

drwxr-xr-x+ 2 root root 4096 Feb 16 17:24 csi

l  切换到用户tony

[root@srv tmp]# su - tony      

[tony@srv ~]$ id

l  用户tony属于用户组ctu

uid=509(tony) gid=509(tony) groups=503(user3),504(user4),509(tony),513(ctu)

l  对目录没有执行权限,所以用户tony无法进入目录csi

[tony@srv ~]$ cd /tmp/csi  

-bash: cd: /tmp/csi: Permission denied

(4)      配置用户组默认ACL

l  目前还没有学习如何建立分区,所以利用现有分区中的tmp目录。

[root@srv ~]# cd /tmp    

l  当前目录目前情况。

[root@srv tmp]# ll

total 4

drwxr-xrwx 2 root root 4096 Feb 16 20:12 24

l  配置用户组ctu对目录24的默认ACL是有可执行,当属于用户组ctu的用户在目录24中建立子目录或文件时,会自动继承这个ACL

[root@srv tmp]# setfacl -m d:g:ctu:x 24

l  浏览目录时,在权限最后一位是一个“+”表示这二个目录配置了ACL

[root@srv tmp]# ll    

total 8

drwxr-xrwx+ 2 root root 4096 Feb 16 20:12 24

l  切换到用户tony

[root@srv tmp]# su - tony     

l  用户tony属于用户组ctu

[tony@srv ~]$ id             

uid=509(tony) gid=509(tony) groups=503(user3),504(user4),509(tony),513(ctu)

[tony@srv ~]$ cd /tmp/24

[tony@srv 24]$ mkdir season8

l  建立的子目录自动继承了ACL

[tony@srv 24]$ ll             

total 8

drwxr-xr-x+ 2 tony tony 4096 Feb 16 20:15 season8

(5)      删除指定ACL

l  目前还没有学习如何建立分区,所以利用现有分区中的tmp目录。

[root@srv ~]# cd /tmp  

l  使用getfacl命令查看ada目录的ACL,可以发现用户andy对该目录有可读、可写、可执行权限。

[root@srv tmp]# getfacl ada

# file: ada

# owner: root

# group: root

user::rwx

user:tony:---

user:andy:rwx

group::r-x

mask::rwx

other::r-x

l  取消用户andy在目录ada上的ACL

[root@srv tmp]# setfacl -x u:andy ada

l  再次查看目录adaACL时,已经没有用户andy

[root@srv tmp]# getfacl ada/   

# file: ada

# owner: root

# group: root

user::rwx

user:tony:---

group::r-x

mask::r-x

other::r-x

(6)      删除所有ACL

l  目前还没有学习如何建立分区,所以利用现有分区中的tmp目录。

[root@srv ~]# cd /tmp 

l  使用getfacl命令查看ada目录的ACL,可以发现用户andy对该目录有可读、可写、可执行权限;用户tony对该目录没有任何权限。

[root@srv tmp]# getfacl ada

# file: ada

# owner: root

# group: root

user::rwx

user:tony:---

user:andy:rwx

group::r-x

mask::rwx

other::r-x

l  删除目录ada上的所有权限。

[root@srv tmp]# setfacl -b ada   

l  再次查看目录adaACL时,已经没有任何ACL

[root@srv tmp]# getfacl ada/     

# file: ada

# owner: root

# group: root

user::rwx

group::r-x

other::r-x