在 Unix/Linux 系统上沿用了多年的权限机制,欠缺灵活性,在现今的信息系统上显得落后和不敷应用.然而一个新的权限机制标准已经诞生出来,本 文将会为大家介绍这个新机制在 Linux 上的操作方式. --------------------------------------------------------- 典型的文件权限 典型的文件权限是这样的: #>ls -l -rwxrw-r-- 1 adam mis 272401 May 10 2003 test.doc 表示文件属于用户adam,权限可读可写可运行;属于群组mis权限可读可写;其他人权限只读 传统的权限只能对所有者,群组,其他来设定3套权限 更复杂的权限则需要依赖ACL 这个 POSIX ACL 的功能在 Linux kernel 2.6 上被正式支持,之后又被 back-port到 2.4 kernel 上.大家常用的档案系统,如:ext3,xfs,jfs,和 ReiserFS,都能使用ACL.当然,大家须要在编译 kernel 时启动 ACL. --------------------------------------------------------- 启动 ACL 虽然在 kernel 中已加进了 POSIX ACL 的支持,但是并不会自动启用的.我们在挂上档案系统时指明要使用 ACL.例如:
mount -t ext3 -o acl /dev/sda1 /home 其中 “-o acl”参数表示在 /dev/sda1 上启用 ACL 的选项.我们亦可以在 /etc/fstab 中加入选项:
/dev/sda1 /home ext3 acl 1 2 --------------------------------------------------------- 查看文件的ACL信息 #>getfacl test.doc # file: test.doc # owner: adam # group: mis user::rw- group::rw- other::r-- --------------------------------------------------------- 访问型ACL设置 更改ACL
setfacl” 指令能更改一个档案或目录的 ACL.其用法如下:
setfacl option rules files
option: -m 用来新增或修改 ACL 中的规则 -x 用来移除 ACL 中的规则
rules: user:(uid/name):(perms) 指定某位使用者的权限 group:(gid/name):(perms) 指定某一群组的权限 other::(perms) 指定其它使用者的权限 mask::(perms) 设定有效的权限屏蔽 如果想让hr群组的使用者能读取 “test.doc”而其它的人不能读取的话. 我们可以用以下的指令达成:
setfacl -m group:hr:r,other::- test.doc 以 getfacl 检视新的 ACL: [adam@www adam]$ getfacl test.doc # file: test.doc # owner: adam # group: mis user::rw- group::rw- group:hr:r-- mask::rw- other::--- 要让使用者 adam 和 eva 能 读取 和 写入, 群组mis 和 hr 只能读取, 其它人不能 读取 和 写入. 我们只须多加两个规则便能达成:
setfacl -m group::r,user:eva:rw report.doc [adam@www adam]$ getfacl report.doc # file: report.doc # owner: adam # group: mis user::rw- user:eva:rw- group::r-- group:hr:r-- mask::rw- other::--- --------------------------------------------------------- 预设型ACL 预设型ACL 只可用于目录, 它决定了该目录下新建立的档案或目录的 ACL.要设定 预设型ACL, 同样使用 “setfacl”. 所不同的是, 在每个规则前加上“ default:”, 例如: setfacl -m default:user::rw /home/adam 如果觉得指令太长的话我们可以使用简略字符: 长写 简写 user: u: group: g: other: o: mask: m: default: d: setfacl -m d:u::rw,d:u:eva:rw,d:g::r,d:o::- /home/adam
[adam@www adam]$ getfacl /home/adam getfacl: Removing leading ''/'' from absolute path names # file: home/adam # owner: adam # group: adam user::rwx group::--- other::--- default:user::rw- default:user:eva:rw- default:group::r-- default:mask::rw- default:other::---
建立新的档案并检视其 存取型ACL:
[adam@www adam]$ touch newfile
[adam@www adam]$ getfacl newfile # file: newfile # owner: adam # group: mis user::rw- user:eva:rw- group::r-- mask::rw- other::---
|