(1) 配置ACL有效权限。
l 目前还没有学习如何建立分区,所以利用现有分区中的tmp目录。
[root@srv ~]# cd /tmp
l 用户tony对目录24的权限是可读、可写、可执行。
[root@srv tmp]# getfacl 24
# file: 24
# owner: root
# group: root
user::rwx
user:tony:rwx
group::r-x
mask::rwx
other::r-x
l 切换到用户tony后,可进入目录24,也可以浏览和写入。
[root@srv tmp]# su - tony
[tony@srv ~]$ cd /tmp/24
[tony@srv 24]$ mkdir Season8
[tony@srv 24]$ ll
total 4
drwxrwxr-x 2 tony tony 4096 Feb 16 20:30 Season8
l 回到root用户。
[tony@srv 24]$ exit
l 指定目录24有效权限为可读、可执行。
[root@srv tmp]# setfacl -m m:rx 24
l 切换到用户tony后,可进入目录24,也可以浏览。
[root@srv tmp]# su - tony
[tony@srv ~]$ cd /tmp/24
[tony@srv 24]$ ll
total 4
drwxrwxr-x 2 tony tony 4096 Feb 16 20:30 Season8
l 但是已经没有了写入权限。
[tony@srv 24]$ mkdir Season7
mkdir: cannot create directory `Season7': Permission denied
明明配置了用户tony的ACL中有写入权限,为什么这里没有权限写了呢?这是因为目录24上配置的有效ACL为可读、可权限,Linux会将有效权限于用户或用户组的ACL进行“AND”运行,也就是说只有在有效ACL中有的权限用户或用户组才可能得到。目录24的有效权限是可读、可执行,所以对该目录配置ACL时,最多可以得到这二个权限。即使tony有写权限也是没有意义的。
getfacl:查看文件或目录的ACL
通过“ls -l”或“ll”命令浏览文件或目录时,只能知道文件或目录是否已配置了ACL功能,但具体配置的内容必须使用getfacl命令查看,该命令语法如下。
getfacl [-dR] [--omit-header] [--no-effective] 文件|目录...
常用选项:
l 文件|目录...:需要显示ACL的文件或目录。
l -d:显示默认的ACL。
l -R:显示目录及其子目录和文件的ACL。
l --omit-header:不显示文件或目录的基本信息。
l --no-effective:不显示有效权限。
getfacl命令可以显示配置了ACL的文件或目录的准确权限,下面看几个getfacl命令的例子。
l 目录fringe权限部分以“+”结尾,说明该目录配置了ACL。
[root@srv tmp]# ll
total 15
drwxr-xr-x+ 2 root root 1024 Feb 16 15:05 fringe
drwx------ 2 root root 12288 Feb 16 12:47 lost+found
drwxr-xr-x 2 root root 1024 Feb 16 15:09 weeds
l 显示目录fringe的默认权限。
[root@srv tmp]# getfacl fringe/
# file: fringe #文件或目录的名称。
# owner: root #文件或目录的的所有者。
# group: root #文件或目录的拥有组。
user::rwx #文件或目录的所有者权限。
l 用户charles的权限,后面的“#effective”显示的是该用户有效权限。root用户为charles配置的该目录权限是rwx,但由于该目录的有效权限是rx,所以最后该用户实际的权限只有rx。
user:charles:rwx #effective:r-x
group::r-x #文件或目录的拥有组权限。
mask::r-x #文件或目录的最大权限。
other::r-x #其他用户权限。
提示:在为文件和目录配置了ACL功能后,通过“ls -l”或“ll”命令浏览文件或目录时,拥有组权限位显示的不再是该文件或目录拥有组权限,而是ACL的最大权限,所以要查看文件的准确权限应该使用getfacl命令。