不是每位Linux管理员都知道如何在文件系统上部署访问控制表ACL以增强权限。现在这种情形应该改变。
在基本的Linux权限主题下,权限分配为文件所有者、文件所有组等。Linux系统上的每个文件与目录都有一个用户所有者与组所有者。每个Linux管理员可以调用当前的拥有者列表,使用表1列出的ls -l命令给他们分配权限:
表1:在目前的Linux系统显示当前的权限分配
Sanders-computer:~sandervanvugt$$ls-l total24 drwx------+13sandervanvugtstaff442Oct2020:17Desktop drwx------+103sandervanvugtstaff3502Oct2108:37Documents drwx------+289sandervanvugtstaff9826Oct2110:05Downloads drwx------@51sandervanvugtstaff1734Sep2216:31Library drwx------+29sandervanvugtstaff986Oct907:59Movies drwx------+5sandervanvugtstaff170May2123:19Music drwx------+24sandervanvugtstaff816Sep1922:21Pictures drwxr-xr-x+4sandervanvugtstaff136Apr122013Public drwxr-xr-x3sandervanvugtstaff102Sep2216:31Samsung -rwxr-xr-x1sandervanvugtstaff324Sep2311:51bart1 -rw-r--r--1sandervanvugtstaff148Aug1413:12rekenprogrammaLOG -rwxr-xr-x1sandervanvugtstaff607Jul316:59script3
如果文件上只需一个拥有者或者一个组,默认的Linux权限方案也可以。
不过,如果你需要给一个组的用户提供文件的控制权,另一个组只需阅读文件,其他的不许访问文件,那么默认的权限就帮不上忙了,这时你需要ACL。
Linux ACL为文件找受托者,允许多个用户与多个组拥有权限。也可以设置默认的访问控制列表,将默认的权限用于在目录中创建的新条款。
setfacl命令使用ACL设置权限。Linux系统通过表2的getfacl命令显示目前的ACL分配情况。
申请权限很简单。例如,Linux管理员想让组织中的销售团队成员访问directory /groups/account里的所有文件的话,可以使用setfacl -R -m g:sales:rx /groups/account。
在该命令中,选项-R用于将ACL递回directory /groups/account里的所有现有条款。选项-m用于变更ACL,g代表的是组,然后是组的名字与分配的权限。
表2:如何用getfacl显示Linux ACL的权限
[root@tlsgroups]#getfaclaccount/ #file:account/ #owner:root #group:account user::rwx group::rwx group:sales:r-x mask::rwx other::---
不要担心因为getfacl命令而出现黑屏,这是在自动更改。
默认的Linux ACL
Linux ACL命令在当前文件上设置权限,但是不会自动在新文件上做任何事。通常,如果一位管理员在目录中使用ACL,他们也想ACL适用于目录里创建的所有新文件。这就是默认ACL的特权。
添加默认ACL与使用添加选项复制之前的setfacl命令一样简单。为了将权限分配给目录中的所有新文件,部署以下命令:
setfacl-md:g:sales:rx/groups/account
你也可以使用getfacl检查当前默认的ACL设置,如表3所示:
表3:检查默认的Linux ACL分配
[root@tlsgroups]#getfaclaccount/ #file:account/ #owner:root #group:account user::rwx group::rwx group:sales:r-x mask::rwx other::--- default:user::rwx default:group::rwx default:group:sales:r-x default:mask::rwx default:other::---
一旦设置好默认的ACL,新的权限将适用于目录中创建的所有条款。