闇の光

读书笔记 经验感受

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

为针对Unix系统权限机制的不足,一个名为POSIX ACL的全新权限机制诞生了,目的就是为了给各Unix系统之间制定一个兼容的ACL标准,使得各操作系统之间使用统一的接口。ACL为现有权限机制的延伸,在现有机制的三个基本设定(owner、group、other)的基础上加入了对某指定使用者或群组的存取权限设定。

在Linux Kernel 2.6上已经正式支持POSIX ACL,常用的档案系统(如:ext2,ext3,xfs,jfs以及ReiserFS)都能使用ACL。当然,在编译kernel时需要启动ACL。

相关的kernel option:

CONFIG_FS_POSIX_ACL
CONFIG_EXT3_POSIX_ACL
CONFIG_EXT2_POSIX_ACL

虽然kernel中已支持POSIX ACL,但是它并不会自动启动,我们必须在挂载档案系统时指明要使用的ACL。

例如: mount -t ext3 -o acl /dev/sda1 /home

也可以在/etc/fstab中加入选项: /dev/sda1 /home ext3 acl 1 2

我们使用getfacl指令来查看一个文件或目录的ACL,使用setfacl指令来更改一个文件或目录的ACL。

其中setfacl指令的用法: setfacl option rules files

option:

-m             新增或修改ACL中的规则
-x             移出ACL中的规则


rules:

user:(uid/name):(perms)             指定某位使用者的权限
group:(gid/name):(perms)            指定某一群组的权限
other::(perms)                      指定其它使用者的权限
mask::(perms)                       设定有效的权限屏蔽

注:perms即r(read)、w(write)、x(execute)。user、group、other、mask可以简写为:u , g , o , m。

例子:设定一文件a.txt,其创建用户alen,群组com,现在要让用户alen和linda都能读写操作,群组com和proj只能读取,其它用户无任何权限操作。

命令如下: setfacl -m user::rw,user:linda:rw,group::r,group:proj:r,o::- a.txt

ACL分为两种类型:存取型ACL(Access ACL)和预设型ACL(Default ACL),之前所介绍的就是存取型ACL。其中:存取型ACL可用于文件或目录,它决定该文件或目录本身的使用权限;预设型ACL只能用于目录,它决定了该目录下新建的文件或目录的ACL。

要设定预设型ACL只需在每个规则前加上"default:" 。
    例如: setfacl -m default:user::rw /home/alex
    或简写为: setfacl -m d:u::rw /home/alex

例子:要设定/home/alex的预设型ACL为:使用者alex和sam能读写,群组只具有读的权力。

命令如下: setfacl -m d:u::rw,d:u:sam:rw,d:g::r,d:o::- /home/alex

posted on 2007-07-05 13:47  taizi  阅读(954)  评论(0编辑  收藏  举报