扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共4页)
体验1 - ACL的基本操作:添加和修改
我首先新建一个文件作为实施ACL的对象:
[root@FC3-vm mnt]# touch file1 [root@FC3-vm mnt]# ls -l file1 -rw-r--r-- 1 root root 7 Dec 11 00:28 file1 |
然后看一下这个文件缺省的ACL,这时这个文件除了通常的UGO的权限之外,并没有ACL:
[root@FC3-vm mnt]# getfacl file1 # file: file1 # owner: root # group: root user::rw- group::r-- other::r- |
下面添加几个用户和组,一会我将使用ACL赋予他们不同的权限:
[root@FC3-vm mnt]# groupadd testg1 [root@FC3-vm mnt]# useradd testu1 [root@FC3-vm mnt]# useradd testu2 [root@FC3-vm mnt]# usermod -G testg1 testu1 |
[root@FC3-vm mnt]# su testu1 [testu1@FC3-vm mnt]$ echo "testu1" >> file1 bash: file1: Permission denied |
[root@FC3-vm mnt]# setfacl -m u:testu1:rw file1 [root@FC3-vm mnt]# su testu1 [testu1@FC3-vm mnt]$ echo "testu1" >> file1 [testu1@FC3-vm mnt]$ cat file1 testu1 |
[testu1@FC3-vm mnt]$ getfacl file1 # file: file1 # owner: root # group: root user::rw- user:testu1:rw- group::r-- mask::rw- other::r- |
我们ls看一下:
[root@FC3-vm mnt]# ls -l file1 -rw-rw-r--+ 1 root root 7 Dec 11 00:28 file1 |
可以看到那个"+"了么?就在通常我们看到的权限位的旁边。这个说明file1设置了ACL, 接下来我们修改一下testu1的权限,同时给testg1这个组以读的权限:
[root@FC3-vm mnt]# setfacl -m u:testu1:rwx,g:testg1:r file1 [root@FC3-vm mnt]# getfacl file1 # file: file1 # owner: root # group: root user::rw- user:testu1:rwx group::r-- group:testg1:r-- mask::rwx other::r- |
可以看到设置后的权限,testu1已经有了执行的权限,而testg1这个组也获得了读取文件内容的权限。也许有人已经注意到了两个问题:首先, file1的组权限从r--变成了rw-。其次,mask是什么?为什么也变化了呢?我们先从mask说起。如果说acl的优先级高于UGO,那么 mask就是一个名副其实的最后一道防线。它决定了一个用户/组能够得到的最大的权限。这样我们在不破坏已有ACL的定义的基础上,可以临时提高或是降低安全级别:
[root@FC3-vm mnt]# setfacl -m mask::r file1 [root@FC3-vm mnt]# getfacl file1 # file: file1 # owner: root # group: root user::rw- user:testu1:rwx #effective:r-- group::r-- group:testg1:r-- mask::r-- other::r-- [root@FC3-vm mnt]# ls -l file1 -rw-r--r--+ 1 root root 7 Dec 11 00:28 file1 |
*需要注意的是,每次修改或添加某个用户或组的ACL项的时候,mask都会随之修改以使最新的修改能够真正生效。所以如果需要一个比较严格的mask的话,可能需要每次都重新设置一下mask。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。