在文件或目录配置了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 再次查看目录ada的ACL时,已经没有用户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 再次查看目录ada的ACL时,已经没有任何ACL。
[root@srv tmp]# getfacl ada/
# file: ada
# owner: root
# group: root
user::rwx
group::r-x
other::r-x