科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件灵活运用Linux中的文件/目录访问控制机制

灵活运用Linux中的文件/目录访问控制机制

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在实际的使用过程中,用户意识到在很多应用场景该机制并不能灵活、高效地满足访问控制需求,因而自Linux内核2.6版本开始便支持更为灵活的ACL(访问控制列表)机制。

来源:TechTarget中国 2012年2月13日

关键字: Linux 文件 目录

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共5页)

 为什么要采用ACL


  UGO访问控制机制在很多情况下难以满足实际文件/目录访问授权的需求,比如,要设定一个组中的部分用户对特定的文件/目录具有读取和访问权限 (rw-),而另外一部分用户只能具备读权限(r--);这在传统的Linux访问控制中无法通过单纯地建立新的组和用户来实现。因此,为了解决这些问 题,人们提出了一种新的访问控制方法,也就是访问控制列表(ACL,AccessControlList)。


  ACL是一个POSIX(可移植操作系统接口,PortableOperatingSystemInterface)标准。目前,支持ACL需要内核 和文件系统的支持。现在2.6内核配合EXT2/EXT3,JFS,XFS,ReiserFS等文件系统都是可以支持ACL的。在目前主流的发行套件,如 RedHatEnterpriseLinux(RHEL)5、RHEL6、Fedora16等等,都已经支持ACL。


  ACL的类型及权限位


  ACL是由一系列的AccessEntry所组成的。每一条AccessEntry定义了特定的类别可以对文件拥有的操作权限。 AccessEntry主要包括6个,可分为两大类:一类包括owner、owninggroup和other,对应传统UGO机制中的user、 group和other;一类则包括nameduser、namedgroup和mask。这六类的主要说明如下:


  user:相当于Linux里文件所有者的permission


  nameduser:定义了额外的用户可以对此文件拥有的permission


  group:相当于Linux里group的permission


  namedgroup:定义了额外的组可以对此文件拥有的permission


  mask:定义了nameduser,namedgroup和group的最大权限


  other:相当于Linux里other的permission


  举个简单的例子,对于如下的ACLEntry的定义:


  #file:example.xml


  #owner:liyang


  #group:operation


  user::rwx


  user:shengping:rw-


  group::rw-


  group:dev:r-x


  mask::rwx


  other::r—


  其中,前面三个以#开头的定义了文件名、文件的所有者和所有者所在的组。后面紧跟着的六行则说明了如下的问题:


  user::rwx说明文件所有者拥有读写和执行权限


  user:shengping:rw-定义了用户shengping拥有对文件的读写权限


  group::rw-说明文件的group拥有读写权限


  group:dev:r-x定义dev组拥有对文件的读和执行权限


  mask::rwx定义了mask的权限为读


  other::r--定义了other用户的权限为读


  值得特别注意的是:mask的rwx权限定义,决定了user:shengping,group和group:dev对文件的最大权限分别是rw、 rw和rx。这也是mask这个ACLEntry的用途所在,可以用它来批量控制权限。当然,在实际的使用过程中,并不需要用户对该Entry直接进行操 作,而只需要使用相应的setfacl命令即可,系统将会根据该命令的执行来自动生成上述Entry项,这其中就包含了mask这个Entry项。


  ACL的基本命令


  ACL的主要命令有2个:getfacl和setfacl。Getfacl用于或取文件或者目录的ACL权限信息,而setfacl则用于设置文件或者目录的ACL权限信息。下面分别对他们的使用进行简单介绍。


  Getfacl-获取ACL权限信息


  getfacl命令用于获取文件的ACL权限信息,其基本用法为:getfacl[文件/目录名]。


  举个例子,首先,使用touch命令先建立一个测试文件acl_test:


  $touchfileacl_test


  然后,使用ls命令来查看该文件的权限访问属性,发现其并没有加入acl权限,因为没有出现“+”符号:


  $ls-lacl_test


  -rw-rw-r--1gavingavin012-2011:49acl_test


  接着,使用getfacl命令来获取文件的ACL权限信息,得到如下结果:


  $getfaclacl_test


  #file:acl_test


  #owner:gavin


  #group:gavin


  user::rw-


  group::rw-


  other::r—


  值得注意的是:即使该文件系统上没有开启ACL选项,getfacl命令仍然可用,不过只显示默认的文件访问权限,即与ls-l显示的内容相似。


  

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章