小谈Linux之ACL功能

         大家好,我是书记。今天我们来谈谈linux的ACL功能;相信大家对于cisco的ACL那是相当的熟悉了,但是对于linux的ACL功能你了解多少呢?OK ,机会来了~~

         Linux中的ACL功能是体现在对文件和目录的权限上,而且对于权限设置的精细度上有了非常大的提高;比如一个文件或者目录的所有者和所有者都是tangsir,权限为755,那么也就是说root用户和tangsir可以写入外,其余的人是没有权限的。但是如果我们配置了ACL功能的话,我们完全可以使另一个用户对此文件或者目录有写入的权限。
如何使文件或者目录具有ACL功能呢?我们可以通过配置分区来支持ACL功能。首先,我们要明白,是不是所有的分区都支持ACL功能呢?在RHEL5.X版本中,安装操作系统时所建立的分区是支持ACl功能的,安装操作系统任务完成后所建立的分区默认是不支持ACL功能的,那么如何实现这种分区支持ACL功能呢?我们可以使用三种方式来实现操作系统安装成功后所建立的分区支持ACL功能;
(1)    使用mount命令,此命令使一个分区临时生效,重启后ACL会失效。
mount –o remount,acl 分区
mount –o acl 分区 挂载点
     以上两种语法的区别:上面的表示的是此分区已经建立且在使用了或者说已经被挂载了,但是还不支持ACL功能,我们通过此命令来实现不影响分区使用的情况下来支持ACL功能;下面表示的是在挂载分区的同时使其具备ACL功能。
例子:第一种情况:
       [root@tangsir ~]# mount -o remount,acl /dev/sdb1
      第二种情况:
       [root@tangsir ~]# mount -o acl /dev/sdb2 /test2
    用mount命令来查看信息:
     [root@tangsir ~]# mount
/dev/sda3 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
none on /proc/fs/vmblock/mountPoint type vmblock (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/sdb1 on /test1 type ext3 (rw,acl)
/dev/sdb2 on /test2 type ext3 (rw,acl)
从挂载的信息中,我们得知了此分区支持ACL功能
 
(2)    使用tune2fs命令,此命令可以使分区永久支持ACL功能
例子:
[root@tangsir ~]# tune2fs -o acl /dev/sdb5
使用-l选项来查看分区配置的情况:
[root@tangsir ~]# tune2fs -l /dev/sdb5
tune2fs 1.39 (29-May-2006)
Filesystem volume name:    <none>
Last mounted on:           <not available>
Filesystem UUID:          7e4472be-3a69-4060-b781-4184149d06ad
Filesystem magic number: 0xEF53
Filesystem revision #:     1 (dynamic)
Filesystem features:       has_journal resize_inode dir_index filetype sparse_super large_file
Default mount options:    acl  è说明了该分区支持ACL功能
Filesystem state:          clean
Errors behavior:           Continue
Filesystem OS type:        Linux
注意:使用tune2fs命令配置分区,用mount命令是查看不到的,只有通过修改/etc/fstab来支持分区ACL功能后才可以看到
 
(3)    通过修改/etc/fstab来实现分区支持ACl 功能
       [root@tangsir ~]# cat /etc/fstab
LABEL=/                  /                       ext3    defaults        1 1
LABEL=/boot              /boot                   ext3    defaults        1 2
tmpfs                    /dev/shm                tmpfs   defaults        0 0
devpts                   /dev/pts                devpts gid=5,mode=620 0 0
sysfs                    /sys                    sysfs   defaults        0 0
proc                     /proc                   proc    defaults        0 0
LABEL=SWAP-sda2          swap                    swap    defaults        0 0
/dev/sdb5               /test3                  ext3    defaults,acl    0 0
为了使配置生效要重启计算机或者使用 mount –o remount PT 命令。
 
分区支持ACL功能后,我们要对文件或者目录具体设置ACL功能以及查看具体的ACL配置,这里要使用两个命令字:setfacel and getfacl 。为了更好的理解命令的用法和设置,我们通过具体的实例来分析。首先,我们来看看setfacl命令常用的选项;
-m:修改文件或目录的ACL rules
-x:删除文件或者目录指定的ACLrules
-d:指定文件或者目录默认的ACLrules
-k:删除文件或者目录默认的ACL rules
-b:删除文件或者目录所有的ACL rules
-R:递归渲染,对具体目录下所有的文件和目录全部渲染
 具体实例:目录系统中的/dev/sdb1分区支持ACL功能,分区的挂载目录是/test1,目录中包含了h3cte和ccie两个目录,我们使用户tangsir对目录ccie有可读,可写,可执行的权限,并且配置用户tangsir对目录ccie有默认的可读,可写,可执行权限,也就是说用户tangsir在目录ccie中建立的目录或者文件时会自动继承ACL权限;
  信息查看:
     [root@tangsir ~]# df -H
文件系统                容量    已用 可用 已用% 挂载点
/dev/sda3                21G   4.9G    15G 26% /
/dev/sda1               104M    12M    87M 12% /boot
tmpfs                   246M      0   246M   0% /dev/shm
/dev/sdb1              2.5G    71M   2.3G   4% /test1
/dev/sdb2               1.7G    37M   1.6G   3% /test2
[root@tangsir ~]# ll /test1
总计 32
drwxr-xr-x 2 root root 4096 07-29 11:27 ccie
drwxr-xr-x 2 root root 4096 07-29 11:27 h3cte
规则配置:
[root@tangsir test1]# setfacl -m u:tangsir:rwx ccie/
命令分析:-m 表示修改文件或者目录的ACL rules;u表示针对用户;tangsir是用户名;rwx是对目录的权限,字母和数字都可以表示;ccie/是具体的目录。
查看并用户测试:
[root@tangsir test1]# ll
总计 32
drwxrwxr-x+ 2 root root 4096 07-29 11:27 ccie 目录权限的最后一位是一个“+”表示目录配置了ACL功能
drwxr-xr-x 2 root root 4096 07-29 11:27 h3cte
切换用户tangsir:
        [root@tangsir ~]# su - tangsir
[tangsir@tangsir ~]$ mkdir /test1/ccie/ccm --可以创建目录,成功!!
[tangsir@tangsir ~]$ ll /test1/ccie/
总计 8
drwxrwxr-x 2 tangsir tangsir 4096 07-29 11:38 ccm -- one
 用户的默认的ACL配置:
         [root@tangsir test1]# setfacl -m d:u:tangsir:rwx ccie/
 
 创建目录或者文件并查看:
         [root@tangsir test1]# su - tangsir
[tangsir@tangsir ~]$ mkdir /test1/ccie/ccm1
[tangsir@tangsir ~]$ ll /test1/ccie/
总计 16
drwxrwxr-x 2 tangsir tangsir 4096 07-29 11:38 ccm
drwxrwxr-x+ 2 tangsir tangsir 4096 07-29 11:43 ccm1   ---two (自动继承了 ACL 功能)
注意比较 one ,two ,看出两者的区别 ~~
 
具体实例:具体实例:目录系统中的/dev/sdb2分区支持ACL功能,分区的挂载目录是/test2,目录中包含了mvp和cca两个目录,建立用户组zu1,zu2,建立用户liugong ,xugong.
liugong属于组zu1,xugong属于zu2.配置zu1对mvp有执行的权限,zu2对cca有所有的权限。并实现zu2对cca目录有默认的ACl功能。(可读,可写,可执行)
组,用户的建立:
            [root@tangsir ~]# groupadd zu1
[root@tangsir ~]# groupadd zu2
[root@tangsir ~]# usermod -G zu1 liugong
[root@tangsir ~]# gpasswd -a xugong zu2
正在将用户“xugong”加入到“zu2”组中
               [root@tangsir ~]# ll /test2/
总计 32
drwxr-xr-x 2 root root 4096 07-29 11:52 cca
drwx------ 2 root root 16384 07-29 10:33 lost+found
drwxr-xr-x 2 root root 4096 07-29 11:52 mvp
 
配置zu1对mvp有执行的权限:
                [root@tangsir test2]# setfacl -m g:zu1:x mvp/ 
zu2对cca有所有的权限:
                [root@tangsir test2]# setfacl -m g:zu2:7 cca/
                            root@tangsir test2]# setfacl -m d:g:zu2:7 cca/
ACL功能查看:
                [root@tangsir test2]# ll
总计 32
drwxrwxr-x+ 2 root root 4096 07-29 11:52 cca
drwx------ 2 root root 16384 07-29 10:33 lost+found
drwxr-xr-x+ 2 root root 4096 07-29 11:52 mvp
用户测试:
                  [root@tangsir ~]# su - liugong
[liugong@tangsir ~]$ cd /test2/mvp/
[liugong@tangsir mvp]$ touch jilu.txt
touch: 无法触碰 “jilu.txt”: 权限不够
liugong对mvp目录只有执行权限,效果正确~
 
               [xugong@tangsir ~]$ cd /test2/cca/
[xugong@tangsir cca]$ mkdir keke && touch diligence
[xugong@tangsir cca]$ ll
总计 12
-rw-rw-r--+ 1 xugong xugong     0 07-29 12:14 diligence
drwxrwxr-x+ 2 xugong xugong 4096 07-29 12:14 keke
 
getfacl 命令来查看文件或者目录的ACL;
[root@tangsir test1]# ll
总计 32
drwxrwxr-x+ 4 root root 4096 07-29 11:43 ccie
drwxr-xr-x 2 root root 4096 07-29 11:27 h3cte
drwx------ 2 root root 16384 07-29 10:31 lost+found
 
[root@tangsir test1]# getfacl ccie
# file: ccie 文件或者目录的名称
# owner: root 文件或者目录的属主
# group: root 文件或者目录属组
user::rwx    属主的权限
user:tangsir:rwx 用户tangsir的权限
group::r-x 属组的权限
mask::rwx 文件或者目录最大权限
other::r-x 其他人的权限
default:user::rwx
default:user:tangsir:rwx 用户tangsir对目录或者文件的默认权限
default:group::r-x
default:mask::rwx
 
                   
文件或者目录ACL的删除:
                   [root@tangsir test1]# getfacl ccie
# file: ccie
# owner: root
# group: root
user::rwx
user:tangsir:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:tangsir:rwx
default:group::r-x
default:mask::rwx
              [root@tangsir test1]# setfacl -x u:tangsir ccie—删除指定的ACL
              [root@tangsir test1]# setfacl -b ccie --删除全部的ACl
[root@tangsir test1]# getfacl ccie
# file: ccie
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
 
注意:文件或者目录配置了ACL以后,由于系统管理的需要要将配置了ACL的目录进行复制操作,那么cp命令后必要加上“-P”选项,如果是剪切的话,就不需要了,因为默认mv命令会保留原ACL。当然前提必须是目标目录必须也要支持ACL功能才行~~
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值