权限管理——ACL权限

linux::acl 配置  

ACL(access control list)。主要的目的是在提供传统的 owner,group,others 的 read,write,execute 权限之外的细部权限设定。ACL 可以针对单一使用者, 单一档案或目录來进行 r,w,x 的权限规范。

1. 安装ACL
即使系统已经支持了ACL,通常系统是不会自动开启acl选项的,因此需要手动重新加载文件系统,开启acl选项:
[root@~ home]# mount –o remount , acl /home

后面的/ 是硬盘分区,-o后面的两个选项,分别表示重新加载根分区,和开启acl选项。当然,在重新加载文件系统时也可以指定文件系统类型:

[root@~ ]#    mount -t ext3 -o remount,acl /home

若没有提示错误,则表示重新加载成功。如果希望系统启动时自动开启ACL选项,可以在/etc/fstab文件中进行设置,找到希望开启ACL选项的文件系统对应行,在选项栏中加入",acl",保存退出。在下次启动系统时则将自动开启ACL选项。

/dev/hda2     /home   ext3     defaults ,acl 0 0 0

如上行中的红色部分,表明在根文件系统上自动开启ACL选项。
 
查看系统有哪些分区:
[root@www ~]# df -h
Filesystem                      Size    Used    Avail Use%      Mounted on
/dev/sda2                        3.8G    2.5G      1.2G  69%        /
/dev/sda3                      15G      172M    14G    2%        /home
/dev/sda1                        46M    11M      33M  25%      /boot
tmpfs                                    252M                252M  0%        /dev/shm
/dev/hdc                          3.7G  3.7G                100%    /mnt/cdrom

查看某个分区的ACl权限是否开启:
[root@www ~]# dumpe2fs -h /dev/sda1
dumpe2fs 1.39 (29-May-2006)
Filesystem volume name:    /boot
Last mounted on:                 
Filesystem UUID:                  51e86dc7-14a2-4fc4-9a4f-5297c3680b77
Filesystem magic number:  0xEF53
Filesystem revision #:      1 (dynamic)
Filesystem features:          has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super
Default mount options:      user_xattr acl
Filesystem state:                clean
Errors behavior:                  Continue
......................

 
2.  ACL的基本用法。
ACL的主要命令有2个: getfaclsetfacl,下面分别对其进行简单介绍。

2.1 getfacl
用于获取文件的acl权限信息,基本用法如下(注意,即使该文件系统上没有开启ACL选项,getfacl命令仍然可用):

[root@~]# getfacl aclTest
# file: aclTest
# owner: edwin
# group: edwin
user::rwx
group::r-x
other::r-x



2.2 setfacl,
用于详细设置文件的访问权限,基本用法如下:

setfacl –[mxdb] file/dir
-m 建立一个ACL规则
-x 删除一个ACL规则
-b 删除全部的ACL规则
下面来看具体例子。

添加/修改ACL规则:-m选项,为用户guest和组guset设置aclTest目录的读写权限,并使用getfacl查看设置结果:

[root@~]# $ setfacl -m u:guest:rw,g:guest:rw aclTest/
[root@~]# $ getfacl aclTest/
# file: aclTest
# owner: zhou
# group: zhou
user::rwx
user:guest:rw-
group::r-x
group:guest:rw-
mask::rwx
other::r-x

可以看到,目录aclTest的ACL中多了3条规则(蓝色部分)。其中,user:guest:rw-和group:guest:rw-为我们设置的访问权限,而mask::rwx为自动添加的内容。

 ACL 在权限继承问题:
[root@~]#setfacl -m u:test:rwx /test
意为增加test用户 对/test目录拥有完全权限
[root@~]#setfacl -m d:u:tset:rwx /test
意为增加test用户 对/test目录拥有完全权限并且默认继承。 设置d: 参数是为文件夹及其下面所有新创建的子对象设置默认的acl 权限。也就是说 设置了d:参数后, 文件夹内所有新创建的文件都会与 /test拥有相同的ACL权限,这就是权限继承,/test文件夹下设置acl之前原有的对象不继承/test的ACL

当对一个用户设置默认继承权限后,如对文件夹/test ,为用户test设置默认继承权限setfacl -m d:u:test:rw /test 后,同时也为文件夹的owner 和group ,other group设置了默认继承权限。setfacl -x d:u:test /test 命令会删除test用户所有的acl包括继承权限。但不会删除 owner ,group 和other group的默认继承权限,setfacl -k /test 命令会去掉所有的默认继承ACL 。如果我们按照下面的顺序运行,结果会怎样?

[root@~]#setfacl -m d:g:tgroup:rwx /newdir
[root@~]#chmod 700 /newdir

su - test   用户test是tgroup 的成员

[root@~]#cd /newdir

结果就是permission denie, 所以如果chmod 和setfacl有权限冲突的话,需要首先设置chmod再设置setfacl

删除ACL规则:删除用户guest对目录aclTest的访问权限:

[root@~]# setfacl -x u:guest aclTest/
[root@~]# getfacl aclTest/
# file: aclTest
# owner: zhou
# group: zhou
user::rwx
group::r-x
group:guest:rw-
mask::rwx
other::r-x

可以看到,用户guest对于目录aclTest的访问权限已经完全删除了。注意,这里不能指定删除guest对aclTest的某一个权限,如setfacl -x u:guest:w aclTest/ 将提示参数错误。

删除文件的所有ACL规则:-b选项

[root@~]# setfacl -b aclTest/
[root@~]# getfacl aclTest/
# file: aclTest
# owner: zhou
# group: zhou
user::rwx
group::r-x
other::r-x

覆盖文件的原有ACL规则:--set选项。注意,-m选项只是修改已有的配置或是新增加一些,而--set选项和-m不同,它会把原有的ACL项全都删除,并用新的替代,需要注意的是--set选项的参数中一定要包含UGO的设置,不能象-m一样只是添加ACL就可以了。使用方法如下所示:

[root@~]# setfacl --set u::rwx,g::rx,o::rx,u:guest:rwx,g:guest:rwx aclTest/
[root@~]# getfacl aclTest/
# file: aclTest
# owner: zhou
# group: zhou
user::rwx
user:guest:rwx
group::r-x
group:guest:rwx
mask::rwx
other::r-x

如果在后面的参数中没有写明UGO参数,即u::rwx,g::rx,o::rx,系统将提示参数缺失。

另外,如果使用ls -l命令查看设置了ACL的文件,将会发现其访问权限位后面比一般文件多了一个+号:

[root@~]# ls -l
drwxrwx---+ 2 zhou zhou 4096 2009-03-18 19:29 aclTest

mask

如果说ACL的优先级高于UGO,那么mask就是一个名副其实的最后一道防线。它决定了一个用户/组能够得到的最大的权限。这样我们在不改变已有ACL的定义的基础上,可以临时提高或是降低安全级别:

[root@~]# setfacl -m mask::r aclTest/
[root@~]# getfacl aclTest/
# file: aclTest
# owner: zhou
# group: zhou
user::rwx
user:guest:rwx                #effective:r--
group::r-x                      #effective:r--
group:guest:rwx              #effective:r--
mask::r--
other::r-x

可以看到,在我们将mask访问权限设置为只读时,mask行以上的ACL权限,除文件所有者外,都变成了只读,即#effective:r--所标识的实际权限。这就为临时改变整体权限和迅速恢复提供了便利。mask只对其他用户和组的权限有影响,对owner和other的权限是没有任何影响的。在使用了ACL的情况下,group的权限显示的就是当前的mask。通常我们把 mask设置成rwx,以不阻止任何的单个ACL项。到此为止,我们已经可以轻而易举地解决本文开头提出的问题了,只需要使用ACL为四组用户设置相应权限即可。最终设置结果如下:

[root@~]# getfacl aclTest/
# file: aclTest
# owner: zhou
# group: zhou
user::---
group::---
group:groupA:rwx
group:groupB:rw-
group:groupC:r--
group:groupD:---
mask::rwx
other::---
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值