Linux 系统传统的权限控制方式,无非是利用 3 种身份(文件所有者,所属群组,其他用户),并分别搭配 3 种权限(读 r,写 w,访问 x)。比如,我们可以通过 ls -l 命令查看当前目录中所有文件的详细信息,其中就包含对各文件的权限设置:
[root@localhost ~]# ls -ltotal 36drwxr-xr-x. 2 root root 4096 Apr 15 16:33 Desktopdrwxr-xr-x. 2 root root 4096 Apr 15 16:33 Documents…-rwxr-xr-x. 2 root root 4096 Apr 15 16:33 post-install…
以上输出信息中,“rwxr-xr-x”就指明了不同用户访问文件的权限,即文件所有者拥有对文件的读、写、访问权限(rwx),文件所属群组拥有对文件的读、访问权限(r-x),其他用户拥有对文件的读、访问权限(r-x)。
权限前的字符,表示文件的具体类型,比如 d 表示目录,- 表示普通文件,l 表示连接文件,b 表示设备文件,等等。
但在实际应用中,以上这 3 种身份根本不够用,给大家举个例子。
图 1 ACL 访问控制权限
图 1 的根目录中有一个 /project 目录,这是班级的项目目录。班级中的每个学员都可以访问和修改这个目录,老师需要拥有对该目录的最高权限,其他班级的学员当然不能访问这个目录。
需要怎么规划这个目录的权限呢?应该这样,老师使用 root 用户,作为这个目录的属主,权限为 rwx;班级所有的学员都加入 tgroup 组,使 tgroup 组作为 /project 目录的属组,权限是 rwx;其他人的权限设定为 0(也就是 —)。这样一来,访问此目录的权限就符合我们的要求了。
有一天,班里来了一位试听的学员 st,她必须能够访问 /project 目录,所以必须对这个目录拥有 r 和 x 权限;但是她又没有学习过以前的课程,所以不能赋予她 w 权限,怕她改错了目录中的内容,所以学员 st 的权限就是 r-x。可是如何分配她的身份呢?变为属主?当然不行,要不 root 该放哪里?加入 tgroup 组?也不行,因为 tgroup 组的权限是 rwx,而我们要求学员 st 的权限是 r-x。如果把其他人的权限改为 r-x 呢?这样一来,其他班级的所有学员都可以访问 /project 目录了。
显然,普通权限的三种身份不够用了,无法实现对某个单独的用户设定访问权限,这种情况下,就需要使用 ACL 访问控制权限。
ACL,是 Access Control list(访问控制列表)的缩写,在 Linux 系统中, ACL 可实现对单一用户设定访问文件的权限。也可以这么说,设定文件的访问权限,除了用传统方式(3 种身份搭配 3 种权限),还可以使用 ACL 进行设定。拿本例中的 st 学员来说,既然赋予它传统的 3 种身份,无法解决问题,就可以考虑使用 ACL 权限控制的方式,直接对 st 用户设定访问文件的 r-x 权限。
开启 ACL 权限
CentOS 6.x 系统中,ACL 权限默认处于开启状态,无需手工开启。但如果你的操作系统不是 CentOS 6.x,可以通过如下方式查看ACL权限是否开启:
[root@localhost ~]# mount/dev/sda1 on /boot type ext4 (rw)/dev/sda3 on I type ext4 (rw)…省略部分输出…#使用mount命令可以看到系统中已经挂载的分区,但是并没有看到ACL权限的设置[root@localhost ~]# dumpe2fs -h /dev/sda3#dumpe2fs是查询指定分区文件系统详细信息的命令…省略部分输出…Default mount options: user_xattr acl…省略部分输出…
其中,dumpe2fs 命令的 -h 选项表示仅显示超级块中的信息,而不显示磁盘块组的详细信息;
使用 mount 命令可以查看到系统中已经挂载的分区,而使用 dumpe2fs 命令可以查看到这个分区文件系统的详细信息。大家可以看到,我们的 ACL 权限是 /dev/sda3 分区的默认挂载选项,所以不需要手工挂载。
如果 Linux 系统如果没有默认挂载,可以执行如下命令实现手动挂载:
[root@localhost ~]# mount -o remount,acl /#重新挂载根分区,并加入ACL权限
使用 mount 命令重新挂载,并加入 ACL 权限。但使用此命令只是临时生效,要想永久生效,需要修改 /etc/fstab 文件,修改方法如下:
[root@localhost ~]#vi /etc/fstabUUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 /ext4 defaults,acl 1 1#加入ACL权限[root@localhost ~]# mount -o remount /#重新挂载文件系统或重启系统,使修改生效
在你需要开启 ACL 权限的分区行上(也就是说 ACL 权限针对的是分区),手工在 defaults 后面加入 “,acl” 即可永久在此分区中开启 ACL 权限。
路由器的acl是什么?
防火墙必须能够提供控制网络数据流的能力,以用于安全性、qos需求和各种策略制定等各个方面。 实现数据流控制的手段之一是使用acl(access control list,访问控制列表)。 acl是由permit或deny语句组成的一系列有顺序的规则,这些规则针对数据包的源地址、目的地址、端口号、上层协议或其他信息来描述。
电脑的ACL是什么?
访问控制列表(Access Control List,ACL) 是路由器和交换机接口的指令列表,用来控制端口进出的数据包。 ACL适用于所有的被路由协议,如IP、IPX、AppleTalk等。 这张表中包含了匹配关系、条件和查询语句,表只是一个框架结构,其目的是为了对某种访问进行控制。 信息点间通信,内外网络的通信都是企业网络中必不可少的业务需求,但是为了保证内网的安全性,需要通过安全策略来保障非授权用户只能访问特定的网络资源,从而达到对访问进行控制的目的。 简而言之,ACL可以过滤网络中的流量,控制访问的一种网络技术手段。 ACL的定义也是基于每一种协议的。 如果路由器接口配置成为支持三种协议(IP、AppleTalk以及IPX)的情况,那么,用户必须定义三种ACL来分别控制这三种协议的数据包。
什么acl规则??

ACL是访问控制列表 具体如下……网络中经常提到的acl规则是Cisco ios所提供的一种访问控制技术。 初期仅在路由器上支持,近些年来已经扩展到三层交换机,部分最新的二层交换机如2950之类也开始提供ACL的支持。 只不过支持的特性不是那么完善而已。 在其它厂商的路由器或多层交换机上也提供类似的技术,不过名称和配置方式都可能有细微的差别。 本文所有的配置实例均基于Cisco IOS的ACL进行编写。 基本原理:ACL使用包过滤技术,在路由器上读取第三层及第四层包头中的信息如源地址、目的地址、源端口、目的端口等,根据预先定义好的规则对包进行过滤,从而达到访问控制的目的。 功能:网络中的节点有资源节点和用户节点两大类,其中资源节点提供服务或数据,用户节点访问资源节点所提供的服务与数据。 ACL的主要功能就是一方面保护资源节点,阻止非法用户对资源节点的访问,另一方面限制特定的用户节点所能具备的访问权限。 在实施ACL的过程中,应当遵循如下两个基本原则:1.最小特权原则:只给受控对象完成任务所必须的最小的权限。 2.最靠近受控对象原则:所有的网络层访问权限控制。 局限性:由于ACL是使用包过滤技术来实现的,过滤的依据又仅仅只是第三层和第四层包头中的部分信息,这种技术具有一些固有的局限性,如无法识别到具体的人,无法识别到应用内部的权限级别等。 因此,要达到end to end的权限控制目的,需要和系统级及应用级的访问权限控制结合使用。
发表评论