当前位置:金沙js333娱乐场 > 网络频道 > Linux之ACL功能

Linux之ACL功能

文章作者:网络频道 上传时间:2019-10-23

Linux权限非常的重要,正常情况下一个文件或目录有三种角色,分别为:目录或文件拥有者(User)、所属群组(Group)、其他用户(Other),每个角色对应:读、写、可执行(rwx)。这也是我们最常见的权限,#ls -l所看到第一列内容。第一位是文件类型,如:d是目录、-是普通文件、l是链接文件、c是字符文件、b是块文件等。 剩下9位即是文件对应三种角色的权限。如下图: 

 

金沙js333娱乐场 1

  Linux中的ACL功能是体现在对文件和目录的权限上,而且对于权限设置的精细度上有了非常大的提高;比如一个文件或者目录的所有者和所有者都是tangsir,权限为755,那么也就是说root用户和tangsir可以写入外,其余的人是没有权限的。但是如果我们配置了ACL功能的话,我们完全可以使另一个用户对此文件或者目录有写入的权限。

还会有其它一些特殊权限,如:SUID、SGID、 Sticky bit,还有一些需要通过命令lsattr来查看和chattr来设置的隐藏权限。

如何使文件或者目录具有ACL功能呢?我们可以通过配置分区来支持ACL功能。首先,我们要明白,是不是所有的分区都支持ACL功能呢?在RHEL5.X版本中,安装操作系统时所建立的分区是支持ACl功能的,安装操作系统任务完成后所建立的分区默认是不支持ACL功能的,那么如何实现这种分区支持ACL功能呢?我们可以使用三种方式来实现操作系统安装成功后所建立的分区支持ACL功能;

然而这些权限并没有办法单纯的针对某一用户或群组来设定特定的权限需求。这时候ACL可以帮助我们解决这个问题。

(1)    使用mount命令,此命令使一个分区临时生效,重启后ACL会失效。

1.什么是ACL?

mount –o remount,acl 分区

ACL(Access Control List)即访问控制列表。主要是针对单一用户,单一文件或目录进行rwx权限的细部设定。可以针对用户(User)、群组(Group)、默认属性掩码(mask)进行设置。

mount –o acl 分区 挂载点

2.设置ACL前的准备工作

     以上两种语法的区别:上面的表示的是此分区已经建立且在使用了或者说已经被挂载了,但是还不支持ACL功能,我们通过此命令来实现不影响分区使用的情况下来支持ACL功能;下面表示的是在挂载分区的同时使其具备ACL功能。

ACL是Linux系统权限额外支持的一项功能,需要文件系统的支持,例如:ReiserFS , EXT2 , EXT3 , EXT4 , JFS , XFS等都支持ACL功能。如果你的文件系统支持ACL,接下来查看你的ACL功能是否启用。在RHEL6中查看文件系统是否启用ACL。

例子:第一种情况:

(1)使用#mount命令查看ACL

       [[email protected] ~]# mount -o remount,acl /dev/sdb1

金沙js333娱乐场 2

      第二种情况:

可以看到sda7的ACL已经启用。

       [[email protected] ~]# mount -o acl /dev/sdb2 /test2

注意:

    用mount命令来查看信息:

如果是用tune2fs命令启用分区的ACL功能,用mount命令是看不到的,要使用tune2fs -l <分区>,查看“Default mount options:”的信息。

     [[email protected] 金沙js333娱乐场,~]# mount

(2)永久启用ACL

/dev/sda3 on / type ext3 (rw)

方法一:

proc on /proc type proc (rw)

如果你想永久在某个partition上启用ACL功能,可以修改 /etc/fstab 。 在rhel6的fstab文件中是用UUID来挂载,所以可以先来确定sda7的UUID号,如下图:

sysfs on /sys type sysfs (rw)

金沙js333娱乐场 3

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

事实上由mount这条命令,你可以知道sda7是挂载在 /data目录。所以在fstab文件中找到挂载在该目录下partition就是一定是sda7了。当然也可以用更加可靠的做法,就是确定这个partition的UUID值。用blkid这条命令查到UUID,再和fstab中比对。

/dev/sda1 on /boot type ext3 (rw)

在sda7上启用ACL功能,只需在defaults后加上acl,如下图:

tmpfs on /dev/shm type tmpfs (rw)

金沙js333娱乐场 4

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

修改完成,保存退出后。重新用mount 命令挂载这个分区。命令如下:

none on /proc/fs/vmblock/mountPoint type vmblock (rw)

#mount -o remount /dev/sda7

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

之后再用mount 查看所有已挂载设备,应该能够看 (rw,acl) 字样。

/dev/sdb1 on /test1 type ext3 (rw,acl)

方法二:

/dev/sdb2 on /test2 type ext3 (rw,acl)

还可以使用tune2fs命令设置分区永久启用ACL。

从挂载的信息中,我们得知了此分区支持ACL功能

tune2fs -o acl <分区>    #设置分区永久启用ACL。

 

tune2fs  -l <分区>    #查看分区详细信息

(2)    使用tune2fs命令,此命令可以使分区永久支持ACL功能

可以看到“Default mount options:    acl”的信息,说明这个分区的ACL已经启用了。

例子:

 

[[email protected] ~]# tune2fs -o acl /dev/sdb5

3.ACL相关设置命令

使用-l选项来查看分区配置的情况:

有以下三条命令:

[[email protected] ~]# tune2fs -l /dev/sdb5

getfacl:取得文件或目录的ACL设置信息。 

tune2fs 1.39 (29-May-2006)

setfac:设置文件或目录的ACL设置信息。

Filesystem volume name:   <none>

chacl:同setfacl,也是用来设定ACL设置信息。用法类似于chmod。不常用。

Last mounted on:          <not available>

这里主要介绍getfacl和setfacl命令。下图是三条命令的man page:

Filesystem UUID:          7e4472be-3a69-4060-b781-4184149d06ad

金沙js333娱乐场 5

Filesystem magic number: 0xEF53

金沙js333娱乐场 6

Filesystem revision #:    1 (dynamic)

金沙js333娱乐场 7

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 功能

       [[email protected] ~]# 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权限;

  信息查看:

     [[email protected] ~]# 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

[[email protected] ~]# 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

规则配置:

[[email protected] test1]# setfacl -m u:tangsir:rwx ccie/

命令分析:-m 表示修改文件或者目录的ACL rules;u表示针对用户;tangsir是用户名;rwx是对目录的权限,字母和数字都可以表示;ccie/是具体的目录。

查看并用户测试:

[[email protected] 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:

        [[email protected] ~]# su - tangsir

[[email protected] ~]$ mkdir /test1/ccie/ccm --可以创建目录,成功!!

[[email protected] ~]$ ll /test1/ccie/

总计8

drwxrwxr-x 2 tangsir tangsir 4096 07-29 11:38 ccm -- one

 用户的默认的ACL配置:

         [[email protected] test1]# setfacl -m d:u:tangsir:rwx ccie/

 

 创建目录或者文件并查看:

         [[email protected] test1]# su - tangsir

本文由金沙js333娱乐场发布于网络频道,转载请注明出处:Linux之ACL功能

关键词: