linux之ACL权限学习笔记

来源:互联网 发布:求数组最大值和最小值 编辑:程序博客网 时间:2024/05/01 12:21
      在linux中我们接触到的常见的权限有三种身份(owner,group,others)搭配三种权限(r,w,x,分别可用数字4 2 1表示)。
      现在描述一个场景:

      讲授linux的jack老师创建了一个文件夹 Directory, Hanson和Bill属于助教组,jack和助教组一起向文件夹Directory里添加、删除资料。文件夹的所属主jack(owner)、助教组(group)需要拥有权限rwx,其他人(others)对Directory则没有任何权限,整个文件夹的权限设为770。可现在来了一个其他班的老师Tom,他想查看Directory里有什么好资料,好和他的学生分享,Tom对Directory的权限只能是r-x,他只拥有进入(x)、查看(r)文件的权限。


       jack的学生们也开始思索了:
       皮皮:把Tom老师放到助教组肯定不行的,这样他会有删除Directory中的文件的权利?
       钢丝:现在我新建一个组,将权限设为r-x,让Directory属于这个组,然后把Tom加入这个组。可这样不是和助教组冲突了吗,linux中的文件的所属组只能有一个!
       猪儿:把其他人(others)的权限改为r-x(5).这样Tom不就可以只能查看、不能删除文件了吗?可是这样的话,所有的人都可以查看这个文件了,宝贵的资料落入恶毒的黑客分子怎么办?
       阿傻:可不可以将文件夹的所属用户改为Tom,权限设为r-x……
       阿傻话还没说完,就被旁边的大胖当头就一下,“你傻啊,所属用户改为了Tom,那我们的老师jack怎么办?这样整个文件夹的权限就是570,你有见过owner的权限还比group权限小吗?”
      ……
     同学们思也不得其解。
     那现在ACL(Access Control List)来了,它就是来解决这个问题的。

     查看分区ACL权限是否开启, dumpe2fs 命令是查询指定分区详细文件系统信息的命令,-h 参数表示仅显示超级块中信息,而不是显示磁盘块组的详细信息。
     df -h 查看分区情况

     dumpe2fs -h /dev/sda12           

     如图:

    

      临时开启分区ACL权限:
     mount -o remount,acl /   重新挂载根分区,并挂载加入acl权限

     若要永久修改,则可以修改/etc/fstab这个文件,他是系统开机自动挂载的文件,使用命令mount -o remount重新挂载文件系统或是重启系统,使修改失效。

      根据上面的情景在我的ubuntu里模拟上面的情况:

      创建用户和组:


      修改Directory文件夹所属主和权限:


       getfacle 文件名   查看acl权限

     设定ACL权限的命令
     setfacl [选项] 文件名
     选项:
               -m  设定ACL权限
               -x  删除指定的ACL权限
               -b  删除所有的ACL权限
               -d  设定默认的ACL权限
               -k  删除默认的ACL权限
              -R  递归设定ACL权限
     1、给用户设定acl权限

          setfacl -m u:jack:rx Directory

     2、给组分配acl权限

          setfacl -m g:testgroup:rx Directory

     3、递归ACL权限

          setfacl -m u:用户名:权限 -R 目录名(递归是父目录在设定ACL权限时,所有的子文件和目录也会拥有相同的    ACL权限)

     4、默认ACL权限:
          默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限。

          setfacl -m d:u:用户名:权限 -R(可选) 目录名

     5、删除ACL权限:
          setfacl -x u:用户名 文件名   删除指定用户的ACL权限
          setfacl -x g:组名 文件名     删除指定用户组的ACL权限
          setfacl -b 文件名 删除所有的ACL权限

       通过ACL,赋予Tom老师r-x权限:


     看到上面图片的mask::rwx没有,mask是用来指定最大有效权限的。如果我给用户赋予了ACL权限,是需要和mask权限“相与”才能得到用户的真正权限,如图:

(来自兄弟连的视频教学ppt)

      设定最大有效权限:setfacl -m m:rx /Directory,看图片的演示:


     修改后的最大有效权限是mask::r-x,注意#effective:r-x,表示现在Director所属组的实际权限不是rwx了,而是r-x,它是和mask::r-x中的r-x,rwx和r-x相与之后的结果r-x。文件的属主的权限不依赖于mask,但组(group)和Tom用户的权限是和mask表示的权限相与之后的结果,这就是所谓的最大有效权限。

   

    



 
0 0
原创粉丝点击