Linux上的ACL权限文件访问

来源: 作者:佚名 2008-04-30 出处:pcdog.com

  • linux
  • 在 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::---


    更多内容请看PCdog.com--访问控制列表(ACL)介绍文件权限访问控制列表相关文章专题
    上一篇:Ubuntu Linux系统下Apt-get命令参数详解
    下一篇:新手学堂:Linux limits.conf解释与应用