分类: LINUX
2010-02-25 14:49:28
ACL详解
传统的安全模型使用的是自主访问控制DAC
Eg: 张三要想修改李四的某个文件哪么李四就必须改变文件的权限 chmod o+w filename 但这样的话每个人都有了修改它的权限显然不合适这就用到了ACL访问列表控制是在传统的安全模型的扩充,它可以在不改变默认的权限就可以为某个或某类用户添加某种权限
要想启用访问控制访问列表必修在挂载的时候启用acl选项
临时有效Mount –o acl devname
想要永久有效就必须修改/etc/fstab文件在defualts后添一个acl .用,分开就开启了
设置格式
Setfacl -m u:username:rw /project/somefile à设定用户的acl权限
setfacl –m g:groupname:rw /project/someà设定组的acl权限
setfacl –x u:username /project/somefileà取消用户的acl权限
setfacl –x g:groupname /project/somefileà取消组的acl权限
setfacl –m d:o:rx /project/somefileà设定目录的acl权限
getfacl /projectàc查看acl权限
getfacl –d /project—>查看默认的acl权限
下面实例说明
分一个新区过程略
本文以/dev/sda5为例
创建一个挂载点mkdir /share
把分区挂山去并开启acl
mount – o acl /dev/sda5 /share
用mount 查看一下是否挂载成功显示如下最后有acl则挂在成功
/dev/sda5 on /share type ext3 (rw,acl)
进入挂载点
cd /share
把/etc/inittab 拷到当前目录做实验
cp /etc/inittab ./
查看一下facl
getfacl inittab
#file :inittab
#owner:root
#group:root
user::rw-
group::r—
mask::rw-
other::r—
getfacl –d inittab à 查看默认的facl权限的
为用户添加acl权限
setfacl –m u:redhatrw
getfacl inittab
#file :inittab
#owner:root
#group:root
user::rw-
user:redhat:rw-
group::r—
mask::rw-
other::r—
为组添加acl权限
groupadd development
serfacl –m g:development:rwx inittab
getfacl inittab
#file :inittab
#owner:root
#group:root
user::rw-
user:redhat:rw-
group::r--
group:development:rwx
mask::rwx
other::r—
setfacl –m m:rw inittab 设定掩码
#file :inittab
#owner:root
#group:root
user::rw-
user:redhat:rw-
group::r—
group:development:rwx #effective:rw-
mask::rw-
other::r—
setfacl –x g:development inittab 取消所有权限
getfacl inittab
#file :inittab
#owner:root
#group:root
user::rw-
user:redhat:rw-
group::r—
mask::rw-
other::r—
设置目录默认acl权限
setfacl –m d:o:rw /share
getfacl /share
#file :share
#owner:root
#group:root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::rw-
补充说明:
Getfacl file1 |setfacl –set –file1=file2 把file1的权限复制给file2
Setfacl –m m::rw filename 统一收回某个权限
当文件被拷贝时不加-p 时不保留acl权限tar归档时保留权限