Linux中的文件访问控制列表ACL

  • 格式:doc
  • 大小:17.00 KB
  • 文档页数:3

Linux中的文件访问控制列表ACL
ACL:访问控制列表
FACL:文件系统访问控制列表
概述:访问控制列表,当文件或目录的权限不能在完全满足访问控制的实现时,即可使用文件系统访问控制列表进行设置访问权限。

分类:
1.对用户进行访问控制设置
2.对组进行访问控制设置
实现:
在一个文件系统挂载时,默认文件系统的ACL功能是不被支持,只有那些在系统安装时生成的那些文件系统才自动支持ACL功能。

所以在进行ACL的设置时要对文件系统的ACL 功能进行启用。

权限的生效次序:属主-->用户ACL-->属组-->组ACL-->其他
【1】启用文件系统的ACL功能
法1.修改文件系统的默认挂载选项
在/etc/fstab中对应的文件系统的默认挂载选项default后面加上",acl"并对其进行重新挂载#mount -o remount /mydata
也可以使用命令
#mount -o remount,acl /mydata
法2.修改文件系统的默认支持选项
#tune2fs -o acl /dev/sda5
【2】设置文件系统的访问控制列表:setfacl
格式:setfacl -m u:USERNAME:MODE FILE
setfacl -m g:GROUPNAME:MODE FILE
setfacl -x u:USERNAME FILE
setfacl -x g:GROUPNAME FILE
参数:-m:设定ACL
-x:取消ACL
#setfacl -m u:redhat:rw- /tmp/test #####为/tmp/test文件设定文件访问控制列表是redhat用户权限为读写
#setfacl -x u:redhat /tmp/test #####取消用户redhat对文件/tmp/test的访问控制列表
【3】扩展
为某个目录设定默认的ACL使其目录内新创建的任何文件或目录继承此ACL
#setfacl -m d:u:centos:rwx /tmp/centos/
如果不设定默认也想达到此种效果
#setfacl -R -m u:centos:rwx test/
注:这样设定的话,若干创建文件,则其执行权限也会继承,因此该项会很危险,所以一般都用设置其默认,在使用tar进行归档具有ACL的文件时,tar默认不会保存文件的ACL,如果要保存ACL的信息则需要在tar后面加上"--acls"选项。

setfacl–[参数][文件/目录],其常用的参数及作用如下所示:
-m:建立一个ACL规则
-x:删除一个ACL规则
-b:删除全部的ACL规则
-set:覆盖ACL规则
删除文件/目录的所有ACL规则
使用-b选项可以删除文件/目录的ACL权限。

如下命令将删除文件acl_test的所有ACL 权限。

可以看到,使用getfacl命令来查看是,mask项已经消失,即该文件已经没有了所有的ACL权限:
$setfacl-bacl_test
)覆盖文件的原有ACL规则
需要使用--set选项。

此处需要强调一下-m选项和--set选项的区别:-m选项只是修改已有的配置或是新增加一些;而--set选项和-m不同,它会把原有的ACL项全都删除,并用新的替代。

另外,--set选项的参数中一定要包含UGO的设置,不能象-m一样只是添
加ACL就可以了。

以下示例该选项的使用方法:
$setfacl--setu::rw,g::rw,o::r,u:gavin:rwx,g:test:rxacl_test
备份和恢复ACL
目前,Linux系统中的主要的文件操作命令,如cp、mv、ls等都支持ACL。

因此,在基本的文件/目录操作中可以很好地保持文件/目录的ACL权限。

然而,有一些其它的命令,比如tar(文件归档)等常见的备份工具是不会保留目录和文件的ACL信息的。

因此,如果希望备份和恢复带有ACL的文件和目录,那么可以先把ACL备份到一个文件里,待操作完成以后,则可以使用--restore选项来恢复这个文件/目录中保存的ACL信息。

下面给出一个具体的例子来进行说明。

将该文件的ACL权限保存至acl_test.acl文件中并进行查看
$getfaclacl_test>acl_test.acl
使用命令从文件恢复acl_test的ACL权限,进行查看,表明成功恢复。

$setfacl--restoreacl_test.acl。