linux源码acl,linux下acl应用详解

简介

ACL是访问控制列表(Access Control Lists)的缩写,对于Unix系统,

ACL是标准Unix文件属性(r,w)的附加扩展。ACL给予用户和管理员更好控制文件读写和权限赋予的能力,商业Unix和NTFS以及Freebsd都支持文件系统的ACL,Linux从2.6内核开始支持对Ext2,Ext3和XFS,JFS等文件系统的ACL支持。

注意,Fedora Core从2开始支持ACL操作,虽然好像并不支持JFS和ReiserFS。

打开文件系统的ACL支持,修改/etc/fstab的mount属性,例如针对这样的

/home文件系统,LABEL=/home /home ext3 rw,acl 1 2

该行第四列原文为defaults,现改为rw,acl以开启文件系统的ACL支持。

可以在线中心挂载文件系统,

# mount -v -o remount /home

当然umount掉文件系统,再mount也是可以的,只要确信没有用户和程序

在使用这个文件系统,可以通过mount命令来查看修改是否生效,

# mount -l

之后,输出中有这样的行就正确了,

/dev/hda5 on /home type ext3 (rw,acl) [/home]

ACL操作命令

getfacl - 取得文件的ACL信息

setfacl - 设置文件的ACL信息

基本命令就是这么两条。

getfacl很简单,可以返回文件当前的ACL信息,例如在一个CVSROOT下的passwd

有这样的属性,

# getfacl passwd

# file: passwd

# owner: cvsadmin

# group: cvsadmin

user::rw-

group::r--

other::r--

可以用setfacl加上相关属性,例如加上allen用户可写到刚才我们看到的

passwd文件,

# setfacl -m u:allen:rw- passwd

这个命令可以这样解释:增加用户(u)用户名(allen)可读写权限(rw-)到

文件passwd。这样之后再执行getfacl,看看结果,

# getfacl passwd

# file: passwd

# owner: cvsadmin

# group: cvsadmin

user::rw-

user:allen:rw-

group::r--

mask::rw-

other::r--

可以看到多出了行user:allen:rw-,表示allen用户有rw-权限。

mask权限,就是用一个固定的权限设置遮住其他的权限设置,这样可以获得比较

好的保护,因为用户最终对文件的权限将是由设置的权限和mask运算出来的

有效权限,例如执行下面的设置,

# setfacl -m mask::r-- passwd

# getfacl passwd

# file: passwd

# owner: cvsadmin

# group: cvsadmin

user::rw-

user:allen:rw- #effective:r--

group::r--

mask::r--

other::r--

我们可以看到allen用户对于passwd文件的有效(effective)权限经计算

为r--。

如果setfacl命令不指定操作用户,那么就是对默认属主用户权限的操作,这时候

的setfacl命令功能上和传统的chmod相同。例如setfacl u::rwx,g::rwx,o::rwx

filename 等价于chmod 777 filenmae。

更多的setfacl操作

-x 删除特定用户的权限设置,例如setfacl -x u:allen

filename,删除filenmae上allen用户的权限设置。

删除所有的ACL设置,

setfacl -b filename

setfacl --remove-all filename

递归选项 -R

此外,ACL的属性设置也可以写在一个文件中,使用setfacl的-M参数从

文件中取得设置信息,这个对成批设置和备份ACL设置恢复特别有效。

默认ACL设置,setfacl -d可以设置,只供目录以及目录继承使用。

cp和mv命令对于ACL的支持,mv命令保持ACL设置信息,cp命令在

使用-p,-a参数时保留ACL设置信息。但是如果从一个支持ACL的文件系统向

一个不支持ACL的文件系统移动或带ACL属性的拷贝,则会得到类似下面这样的错误提示,

cp: preserving permissions for `filename': Operation not supported

设置了ACL的文件在ls -l时可以看到这样的情况,

-rw-rw----+ 1 allen chen 0 Jun 2 09:52 filename

有个加号在第一个列的末尾。

可以这样备份ACL信息和恢复,

getfacl -R dir/ > acl.bak.txt

setfacl --restore acl.bak.txt

打包备份ACLs目录和文件

请使用star命令打包,参数-acl用于指定备份相关的ACL信息。

备份:star -Hexustar -acl -c f=Tree.star Tree

恢复:star -acl -x f=Tree.star

ACL的应用,主要可以用在共享文件时需要细分用户权限的地方,如CVS仓库的权限控制应用等方面,ACL都有很好的用途。

******

ACL 在权限继承问题:

setfacl -m u:tset:rwx /test

意为增加test用户 对/test目录拥有完全权限

setfacl -m -d u:tset:rwx /test

意为增加test用户 对/test目录拥有完全权限并且默认继承。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值