9位的属主/属组/其他人访问控制是强大的,足以满足大多数管理方面的需求。但事实上,在所有非UNIX的操作系统上都采用了一种实质上更为复杂的方式来管理对于文件的访问:访问控制列表(access control list),简称ACL。在Linux下,ext2,ext3,ReiserFS,XFS和JFS都支持ACL。通常在默认情况下会禁用它们,在调用mount命令时加-o acl 选项就可以启用ACL。 Linux的ACL主要是对标准的9位权限模型直接进行扩展。ACL可以按照用户和用户组的任意组合独立地设置rwx权限位。下表列出ACL各组成项。 格式 举例 权限 user::perms user::rw- 文件的属主
user 和group 可用名字或UID/GID来表示。 getfacl命令可以显示一个文件当前的ACL, setfacl可以修改或设置文件当前的ACL,而setfacl -x aclspec file 可以xxACL,setfacl -m aclspec file 可以修改或扩展ACL,setfacl -x aclspec file 可以删除ACL中的特定项。aclspec中要包含多个ACL项时,用逗号分隔。
[root@netcloud /]# getfacl root # file: root # owner: root # group: root user::r-x group::r-x other::---
[root@netcloud /]# su netcloud [netcloud@netcloud /]$ cd root bash: cd: root: 权限不够 [netcloud@netcloud /]$ exit
[root@netcloud /]# setfacl -m user:netcloud:rwx root
[root@netcloud /]# su netcloud [netcloud@netcloud /]$ cd root [netcloud@netcloud /root]$ exit [root@netcloud /root]# su test [test@netcloud /]$ cd root bash: cd: root: 权限不够
[test@netcloud /]$ getfacl root # file: root # owner: root # group: root user::r-x user:netcloud:rwx group::r-x mask::rwx other::---
带有ACL的文件仍然保留有它们原有的权限模式位,但是会自动在两套权限设置之间强制保持一致,使它们不发生冲突。 |