中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 操作系统 > Linux > LinuxUnix安全
linux安全:Linux ACL体验(2)
作者:佚名 时间:2007-08-25 21:41 出处:IBM 责编:月夜寒箫
              摘要:linux安全:Linux ACL体验(2)
体验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的情况下,getfacl仍然能返回一个这样的结果。不过setfacl是不能工作的。

下面添加几个用户和组,一会我将使用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
            
现在我们看看testu1能做什么:
[root@FC3-vm mnt]# su testu1
            [testu1@FC3-vm mnt]$ echo "testu1" >> file1
            bash: file1: Permission denied
            
失败了。因为file1并不允许除了root以外的用户写。我们现在就通过修改file1的ACL赋予testu1足够的权限:
[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可以对file1做读写操作了。我们来看一下file1的ACL:
[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
            
在testu1对应的ACL项的后边出现了effective的字样,这是实际testu1得到的权限。Mask只对其他用户和组的权限有影响,对owner和other的权限是没有任何影响的。执行ls的结果也显示UGO的设置也有了对应的变化。因为在使用了ACL的情况下,group的权限显示的就是当前的mask。通常我们把mask设置成rwx,以不阻止任何的单个ACL项。

*需要注意的是,每次修改或添加某个用户或组的ACL项的时候,mask都会随之修改以使最新的修改能够真正生效。所以如果需要一个比较严格的mask的话,可能需要每次都重新设置一下mask。
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有