教到Linux 的acl ,只是大致地讲了一下,结合我自己之前的认识,在这里记录一下。
(当初我之所以知道 Linux也有acl这工具,是因为我在学习cisco路由时,学到ACL访问控制列表的内容,突发其想,想着Linux有没有访问控制之类 的东西?就上网搜了一下,结果真搜到了,当时真兴奋。哈哈。这是题外话)
首先先模拟一下环境,先创建一个文件系统。
dd if=/dev/zero of=/opt/test count=512
割一块大小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 的大致功能应该差不多了。