您的位置:首页 > 运维架构 > Linux

linux acl

2014-05-05 22:09 423 查看
某些系统账号希望对某一些文件有管理权限,有三种方法: 1 加入属主所在的同一个组中,这等于扩大了访问其他文件的权限了。 2 加入other中,这样权限放开的更大了。 3 给文件的sudo权限。 4 采用acl策略。 前三种方法都有自己的缺点,最终考虑使用acl。 所谓ACL,就是Access Control List,一个文件/目录的访问控制列表,可以针对任意指定的用户/组分配RWX权限。此功能 需要内核的支持,在linux 2.6以后默认加入内核中。 acl由一系列的访问控制权限组成,主要的有如下: ACL_USER_OBJ: 相当于Linux里file_owner的权限 ACL_USER: 定义了额外的用户可以对此文件拥有的权限 ACL_GROUP_OBJ: 相当于Linux里group的权限 ACL_GROUP: 定义了额外的组可以对此文件拥有的权限 ACL_MASK: 定义了ACL_USER, ACL_GROUP_OBJ和ACL_GROUP的最大权限 ACL_OTHER: 相当于Linux里other的权限查看内核版本 uname -a
查看是否安装acl dumpe2fs |grep "Default mount iptions"



在设置acl规则前我们先了解一下设置acl常用的选项:

-b,--remove-all

删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留。

-k,--remove-default

删除缺省的acl规则。如果没有缺省规则,将不提示。

-n,--no-mask

不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定。

--mask

重新计算有效权限,即使ACL mask被明确指定。

-d,--default

设定默认的acl规则。

--restore=file

从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除--test以外的任何参数一同执行。

--test

测试模式,不会改变任何文件的acl规则,操作后的acl规格将被列出。

-R,--recursive

递归的对所有文件及目录进行操作。

-P,--physical

跳过所有符号链接,包括符号链接文件。

-m -x -M -X

-m -x 是在设置acl所需要定义的选项,-m 表示设置acl ,-x 表示删除acl规则

-M -X 则可以在文件中读入acl规则,使相应的规则生效

用cp来复制文件的时候我们现在可以加上-p选项.这样在拷贝文件的时候也将拷贝文件的ACL属性.对于不能拷贝的ACL属性将给出警告

mv命令将会默认地移动文件的ACL属性. 同样如果操作不允许的情况下会给出警告

开始设置规则:
以root 用户建立一个文件a.txt,设置权限只有root可读
通过acl,给niu用户增加可读权限

设置acl之前:



设置acl:此时 ls -l 后面会多出个 + 号



设置acl之后:niu 用户可以读取a.txt的内容



在acl的mask不存在的情况下,权限位的第二组才表示组的权限,如果acl中存在mask,则第二组权限位代表mask值,mask规定了ACL_USER, ACL_GROUP和ACL_GROUP_OBJ的最大值,在设置的权限相冲突的情况下以设置的mask为主例如: 设置acl 用户niu 对a.txt 有rw权限,设置mask 位r 。结果应该是用户牛对a.txt只有读权限

验证:只可读不可写


把mask改为rw,结果应该是用户niu 具有读写权限

删除acl,也可以从文件中恢复文件原有的acl规则,如下:先保存规则到一个文件中

恢复acl



本文出自 “牛磊的博客” 博客,请务必保留此出处http://helloeveryone.blog.51cto.com/6171143/1406906
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: