今天上课老师教到linux 的acl ,只是大致地讲了一下,结合我自己之前的认识,在这里记录一下。

   (当初我之所以知道 linux也有acl这工具,是因为我在学习cisco路由时,学到ACL访问控制列表的内容,突发其想,想着linux有没有访问控制之类 的东西?就上网搜了一下,结果真搜到了,当时真兴奋。哈哈。这是题外话)

    首先先模拟一下环境,先创建一个文件系统。

   

割一块大小512字节大小的文件出来 。

然后,将它与循环设备/dev/loop0连接在一起。

 

  1. losetup /dev/loop0 /opt/test 
  2.  
  3. losetup将循环设备与文件连接在一起,针文件模拟 成整个文件系统,让用户 
  4. 得以将其视为硬盘驱动器,光驱或软驱,并挂入当前指定目录来使用。 
  5. 好处是,即使这个文件系统崩溃,也不会影响到我们整个系统的正常动作。 
  6. 也可以设备一个密码:
  7. losetup -e 1234 /dev/loop0

 

  1. mke2fs /dev/loop0 
  2. mount -o rw,acl /dev/loop0 /mnt 

这样子,环境就做好了,以后的实验操作都在这个文件系统上做。

设置ACL的命令是这样的:

 

  1. setfacl -m u:用户:rwx file 

做个实验看看效果 :

 

这样子,对于由root创建的文件,用户test1也有了可读可写的权限了。

 

配置起来比较简单,但是其中有一个重点 ,就是图中的那个mask,这个是做什么用的?其实就是umask 的作用

umask:限定用户所能得到的最大权限 。

默认情况下,这个umask的值随着你的setfacl所配置的值一起改变,以使你的配置能达到你的意想之中。

例如:

 

如图中所示,没有setfacl之前是mask::rw-,配置了setfacl之后 ,变成了rwx。

 

不过这个值必须确定你想要什么,如果这个时候你再:

setfacl -m u:test2:rwx file

那么,这个mask又会变成rwx了

那么,上面那个#effective:r--是什么意思?

这个是说,对于用户test1,它对file文件的真实权限是r--,虽然我们设置 的是rwx,但是因为mask的关系,我们所能得到的最大权限 是r--。所以实际上,就只有r权限。

要删除ACL,可以这样:

 

也可以:

 

 

备份ACL:

 

 

ACL 的大致功能应该差不多了。