• 热门搜索:
  • 装机系统
  • 雨林木风系统
  • 深度系统
  • 电脑公司系统
  • win7装机版
  • 教程分类
    当前位置:主页 > 教程咨询 > Linux教程

    Linux ACL 权限之高级进阶篇

    来源:装机员┆发布时间:2018-10-11 11:00┆点击:

    装机员为您提供Linux ACL 权限之高级进阶篇的文章咨询供您阅读,如何使用Linux ACL 权限之高级进阶篇的方法对您有帮助也请您举手之劳分享给您身边的人。

    笔者在《Linux ACL 权限入门基础文章》一文中介绍了 Linux ACL 权限的基本用法,本文笔者将尝试探究 ACL 中的基本概念和实现原理,希望能够通过进一步的加深对 Linux 权限系统的理解。说明:本文的演示环境为 Uuntu 16.04。

    ACL 中的基本概念

    ACL 的类型

    access ACL:我们可以认为每一个对象(文件/路径)都可以关联一个 ACL 来控制其访问权限,这样的 ACL 被称为 access ACL。

    default ACL:路径也可以关联一个 ACL 来控制在该路径中创建的对象的默认 ACL,这样的 ACL(路径关联的 ACL)被称为 default ACL。

    ACL 条目
    一个 ACL 由多个 ACL 条目组成。一个 ACL 条目指定一个用户或者一组用户对所关联对象的读、写、执行权限。下图展示了 ACL 条目的类型及含义:

    Linux ACL 权限之高级进阶篇

    ACL 权限与 ugo 权限的对应关系

    ACL 定义的权限是 ugo 权限的超集。

    文件的 owner 权限对应于 ACL 权限中的 ACL_USER_OBJ 条目。

    当 ACL 权限中具有 ACL_MASK 条目时,文件的 group 权限对应于 ACL 权限中的 ACL_MASK 条目。否则,当 ACL 权限中具没有 ACL_MASK 条目时,文件的 group 权限对应于 ACL 权限中的 ACL_GROUP_OBJ 条目。

    文件的 other 权限对应于 ACL 权限中的 ACL_OTHER_OBJ 条目。

    文件的 ugo 权限总是与对应的 ACL 条目保持一致。修改文件的 ugo 权限会导致修改相关的 ACL 条目,同样的,修改这些 ACL 条目会导致修改对应的 guo 权限。

    新建文件的 default ACL

    一个文件的 access ACL 会在通过 creat()、mkdir()、mknod()、mkfifo() 和 open() 函数创建该文件时被初始化。

    如果一个路径被设置了 default ACL,那么将会由文件创建函数的 mode 参数和路径的 default ACL 共通决定新文件的 ACL 权限:

    新的文件继承父路径的 default ACL 作为自己的 access ACL。

    修改与 ugo 权限对应的 access ACL 条目,使其不包含文件创建函数的 mode 参数不包含的权限。

    说明:此时 umask 被忽略。

    如果一个路径没有被设置 default ACL,那么将由文件创建函数的 mode 参数和 umask 共同决定新文件的 ACL 权限:

    新建文件的 access ACL 包含 ACL_USER_OBJ, ACL_GROUP_OBJ, 和 ACL_OTHER 条目。这些条目的权限被设置为由 umask 决定的权限。

    修改与 ugo 权限对应的 access ACL 条目,使其不包含文件创建函数的 mode 参数不包含的权限。

    文件权限检查的算法(Access Check Algorithm)

    当一个进程访问(读、写、执行)一个被 ACL 保护的文件时,文件权限检查的算法决定了是否授权给进程访问该文件。
    下面我们以 下面我们以伪代码的方式来解释文件权限检查的算法。
    第一步:if 进程的 effective user ID 与文件 owner 匹配
                      if ACL 的 ACL_USER_OBJ 条目包含了请求所需的权限,此时就被授权访问文件
                      else 访问被拒绝
    第二步:else if 进程的 effective user ID 匹配文件 ACL 权限中任何一个 ACL_USER 条目中的 user
                      if 匹配的 ACL_USER 条目和 ACL_MASK 条目包含了请求所需的权限,此时就被授权访问文件
                      else 访问被拒绝
    第三步:else if 进程的 effective group ID 或者任何一个补充的(supplementary) group ID 匹配文件的 group 或 ACL 权限中任何一个 ACL_GROUP 条目的 group
                      if ACL 权限包含 ACL_MASK 条目
                          if ACL_MASK 条目和匹配的任何 ACL_GROUP_OBJ 或 ACL_GROUP 条目包含了请求所需的权限,此时就被授权访问文件
                            (注释:ACL_MASK 与其它项是 and 的关系,用来控制最大权限)
                          else 访问被拒绝
                      else (注意:没有 ACL_MASK 条目,就没有 ACL_GROUP 条目)         
                          if ACL_GROUP_OBJ 条目包含了请求所需的权限,此时就被授权访问文件
                          else 访问被拒绝
    第四步:else if ACL_OTHER 条目包含了请求所需的权限,此时就被授权访问文件
    第五步:else 访问被拒绝

    ACL 的文本描述格式
    以上就是装机员给大家介绍的如何使用Linux ACL 权限之高级进阶篇的方法了,如何使用Linux ACL 权限之高级进阶篇的方法到这里也全部结束了相信大家对如何使用Linux ACL 权限之高级进阶篇的方法都有一定的了解了吧,好了,如果大家还想了解更多的资讯,那就赶紧点击装机员系统官网吧。

    本文来自装机员www.zhuangjiyuan.com如需转载请注明!

    Tag标签| RSS订阅 | 网站地图
    装机员系统之家提供win7装机版xp系统下载win7系统下载、最新Windows10系统下载,专为装机修机员奉上最好的软件、系统、U盘pe、程等平台
    请勿发布违反国家法律法规的内容,会员观点不代表本站立场.本站发布的系统与软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,
    否则后果自负,请支持购买微软正版软件! 如侵犯到您的权益,请及时通知我们,我们会及时处理。 粤ICP备15116662号