Linux管理员如何使用ACL设置发送集体权限?
不是每位Linux管理员都知道如何在文件系统上部署访问控制表ACL以增强权限。现在这种情形应该改变。
在基本的Linux权限主题下,权限分配为文件所有者、文件所有组等。Linux系统上的每个文件与目录都有一个用户所有者与组所有者。每个Linux管理员可以调用当前的拥有者列表,使用表1列出的ls -l命令给他们分配权限:
表1:在目前的Linux系统显示当前的权限分配
Sanders-computer:~ sandervanvugt$$ ls -l total 24 drwx------+ 13 sandervanvugt staff 442 Oct 20 20:17 Desktop drwx------+ 103 sandervanvugt staff 3502 Oct 21 08:37 Documents drwx------+ 289 sandervanvugt staff 9826 Oct 21 10:05 Downloads drwx------@ 51 sandervanvugt staff 1734 Sep 22 16:31 Library drwx------+ 29 sandervanvugt staff 986 Oct 9 07:59 Movies drwx------+ 5 sandervanvugt staff 170 May 21 23:19 Music drwx------+ 24 sandervanvugt staff 816 Sep 19 22:21 Pictures drwxr-xr-x+ 4 sandervanvugt staff 136 Apr 12 2013 Public drwxr-xr-x 3 sandervanvugt staff 102 Sep 22 16:31 Samsung -rwxr-xr-x 1 sandervanvugt staff 324 Sep 23 11:51 bart1 -rw-r--r-- 1 sandervanvugt staff 148 Aug 14 13:12 rekenprogrammaLOG -rwxr-xr-x 1 sandervanvugt staff 607 Jul 3 16:59 script3
如果文件上只需一个拥有者或者一个组,默认的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@tls groups]# getfacl account/ # 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 -m d:g:sales:rx /groups/account
你也可以使用getfacl检查当前默认的ACL设置,如表3所示:
表3:检查默认的Linux ACL分配