教到Linux 的acl ,只是大致地讲了一下,结合我自己之前的认识,在这里记录一下。
(当初我之所以知道 Linux也有acl这工具,是因为我在学习cisco路由时,学到ACL访问控制列表的内容,突发其想,想着Linux有没有访问控制之类 的东西?就上网搜了一下,结果真搜到了,当时真兴奋。哈哈。这是题外话)
首先先模拟一下环境,先创建一个文件系统。
割一块大小512字节大小的文件出来 。
然后,将它与循环设备/dev/loop0连接在一起。
- losetup /dev/loop0 /opt/test
-
- losetup将循环设备与文件连接在一起,针文件模拟 成整个文件系统,让用户
- 得以将其视为硬盘驱动器,光驱或软驱,并挂入当前指定目录来使用。
- 好处是,即使这个文件系统崩溃,也不会影响到我们整个系统的正常动作。
- 也可以设备一个密码:
- losetup -e 1234 /dev/loop0
- mke2fs /dev/loop0
- mount -o rw,acl /dev/loop0 /mnt
这样子,环境就做好了,以后的实验操作都在这个文件系统上做。
设置ACL的命令是这样的:
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 的大致功能应该差不多了。