0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ACL是什么?ACL有什么用?

Linux爱好者 来源:未知 作者:李倩 2018-09-30 16:52 次阅读

ACL 是什么

ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表。它在UGO权限管理的基础上为文件系统提供一个额外的、更灵活的权限管理机制。它被设计为UNIX文件权限管理的一个补充。ACL允许你给任何的用户或用户组设置任何文件/目录的访问权限。

本文的演示环境为 ubuntu 16.04。

ACL有什么用

既然是作为UGO权限管理的补充,ACL自然要有UGO办不到或者很难办到的本事,例如:

可以针对用户来设置权限

可以针对用户组来设置权限

子文件/目录继承父目录的权限

检查是否支持ACL

ACL需要Linux内核和文件系统的配合才能工作,当前我们能见到的大多数Linux发行版本默认都是支持的。但最好还是能够先检查一下:

sudo tune2fs -l /dev/sda1 |grep"Default mount options:"

Defaultmount options: user_xattracl

我们能够看到默认情况下(Default mount options:)已经加入 acl 支持了。

如何设置ACL

我们可以使用setfacl和getfacl命令来设置或观察文件/目录的acl权限。

setfacl

参数不多,直接列出来了:

getfacl

getfacl 文件/目录名

下面我们通过一些示例来演示 ACL 权限的基本用法。

针对用户来设置权限

笔者系统中的当前用户是 nick,再创建两个用户 tester 和 tester1 用来进行测试:

$sudo adduser tester

$sudo adduser tester1

创建文件 aclfile,检查其默认的权限信息

把用户切换为 tester,发现没有写文件的权限:

这是因为 other 没有写 aclfile 文件的权限。

下面我们为 tester 用户赋予读写 aclfile 文件的权限:

$ setfacl -m u:tester:rw aclfile

修改成功后再次以 tester 用户的身份向 aclfile 文件写入数据,这次已经可以正常写入了。查看 aclfile 文件的权限:

$ ll aclfile

貌似并没有发生什么变化,只是在描述权限的地方多出了一个 “+” 号。下面再看看 acl 权限:

$ getfacl aclfile

多出了一些信息,其中比较重要的是 user:tester:rw-,就是它让用户 tester 具有了读写 aclfile 的权限。

针对用户组来设置权限

和针对用户的设置几乎一样,只是把小写的 u 换成小写的 g 就行了。

子文件/目录继承父目录的权限

这是一个很棒的例子,它能让我们创建的子文件或者子文件夹继承父文件夹的权限设置!

$mkdir mydir

$ll -dmydir

$setfacl -md:u:tester:rwx mydir

$getfacl mydir

注意参数 d 在这里起到了决定性的作用。下面是设置后的 mydir 目录的权限属性:

这次多出了一些以 default 开头的行,这些 default 权限信息只能在目录上设置,然后会被目录中创建的文件和目录继承。下面分别在 mydir 目录下创建文件 testfile 和目录 testdir,并查看它们的 acl 权限:

$touch testfile

$mkdir testdir

$getfacl testfile

$getfacl testdir

从上图可以看到文件 testfile 继承了父目录的 acl 权限,因此用户 tester 对它有读写权限。下面再看看 testdir 目录:

从图中可以看出,testdir 目录不仅继承了 tester 的访问权限,还继承了父目录上的 default 权限。也就是说我们通过这种方式设置在目录上的权限可以被子目录递归的继承下去。

更改 ACL 权限

-m 选项其实是在更改文件和目录的 ACL 权限

当一个用户或组的 ACL 权限不存在时,-m 选项执行的是添加操作,

如果一个用户或组的 ACL 权限已经存在时,-m 选项执行的是更新操作。

我们重新创建一个 aclfile 文件,通过下面的命令设置 tester 用户对它的访问权限:

$ setfacl -m u:tester:rwx aclfile

这时 -m 选项是在添加 ACL 权限。然后我们修改 tester 用户的权限,移除其对 aclfile 的执行权限:

$ setfacl -m u:tester:rw aclfile

这时 -m 选项是在更改现有的 ACL 权限。接下来再让我们试一下为不同的用户或组设置 ACL 权限:

$ setfacl -m g:tester1:rwx aclfile

这次是新添加了 group tester1 的权限,并且没有影响 tester 用户的权限。

–set 选项会先清除掉原有的 ACL 权限,然后添加新的权限

我们接着设置 aclfile 文件的 ACL 权限:

$ setfacl --set u::rw,u:tester2:rwx,g::r,o::- aclfile

需要注意的是一定要包含 UGO 权限的设置,不能象 -m 一样只包含 ACL 权限。o::- 是另一个需要注意的地方,其完整的写法是 other::-,就像 u::rw 的完整写法是 user::rw- 一样。通常我们可以把 “-” 省略,但是当权限位只包含 “-” 时,就至少要保留一个。如果写成了o::,就会报错。

删除 ACL 权限

有添加就有删除,我们可以通过 setfacl 命令的 -x 选项来删除指定用户或组的 ACL 权限,还可以通过 -b 选项来清除文件和目录上所有的 ACL 权限。

我们创建一个新的测试文件 aclfile,并设置下面的 ACL 权限:

$ setfacl -m u:tester:rwx,u:tester1:rw,g:tester2:rwx aclfile

下面通过 -x 选项删除 group tester2 的 ACL 权限(注意命令中只指定了组的名称而没有指定权限信息):

$ setfacl -x g:tester2 aclfile

查看一下结果,发现下图中已经没有 group:tester2 的权限信息了:

下面通过 -b 选项一次性删除 aclfile 上所有的 ACL 权限:

$ setfacl -b aclfile

-b 选项直接清除了文件上的所有 ACL 权限。这个行为对于目录来说也是一样的,这里就不再演示了。

备份和恢复 ACL 权限

常见的文件操作命令 cp 和 mv 等都支持 ACL 权限,只是 cp 命令需要加上 -p 参数。但是 tar 等常见的备份工具不会保留目录和文件的 ACL 权限信息。如果希望备份和恢复带有 ACL 权限的文件和目录,可以先把 ACL 权限信息备份到一个文件里,然后再用 -restore 选项来恢复这些信息。下面演示 ACL 权限的保存和恢复。我们先创建下面的目录结构:

并分别为 acldir 目录和 aclfile 文件设置 ACL 权限:

然后使用下面的命令导出 acldir 目录的 ACL 权限信息并保存到文件 acldir.acl 文件中:

$ getfacl -R acldir > acldir.acl

接下来删除掉 acldir 目录的 ACL 权限:

$ setfacl -R -b acldir

现在 acldir 目录及其子文件上的 ACL 权限都被删除掉了。最后我们再通过下面的命令把它们的 ACL 权限都恢复回来:

$ setfacl --restore acldir.acl

之前删除的 ACL 权限全都恢复回来了!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10988

    浏览量

    206725
  • 权限管理
    +关注

    关注

    0

    文章

    10

    浏览量

    9033
  • ACL
    ACL
    +关注

    关注

    0

    文章

    59

    浏览量

    11875

原文标题:Linux ACL 权限

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    CYW43455带有7ACL 路的设备有什么作用吗?

    吗? (1 个中央连接到 7 个外围设备,还是 1 个外围设备到 7 个中央?) 2. 如果它不能组成最多 7 个链接,什么修改的指导链接吗? 什么将仅限于链接号? 3。我能知道为什么我在 ble 数据表中找不到要描述的 ACL/SCO 链接号吗? 比如 CYW2070
    发表于 03-01 09:08

    Consul ACL的配置与使用过程

    Consul ACL访问控制列表配置
    发表于 02-27 13:46

    罗斯蒙特499ACL-01-54和膜23501-10

    罗斯蒙特499ACL-01-54和膜23501-10德科蒙过程控制(武汉)有限公司 冯工 ***Rosemount™ 499ACL 型余氯传感器499ACL 是一个隔膜覆盖的电流式传感器系列,可用
    发表于 09-15 13:47

    路由器ACL安全经典配置录像教程

    路由器ACL安全经典配置录像教程
    发表于 09-13 17:53 133次下载
    路由器<b class='flag-5'>ACL</b>安全经典配置录像教程

    什么是接入控制表(ACL)

    什么是接入控制表(ACL) 访问控制列表(Access Control List,ACL) 是路由器接口的指令列表,用来控制端口进出的数据包。ACL适用于所有的
    发表于 04-06 09:05 1151次阅读

    基于ACL的权限系统实现

    ACL全称Access Control List,在ACL中,包含用户(User)、资源(Resource)、资源操作(Operation)三个关键要素。通过将资源以及资源操作授权给用户而使用户获取对资源进行操作的权限,模型如下图所
    发表于 05-16 15:49 0次下载
    基于<b class='flag-5'>ACL</b>的权限系统实现

    如何通过用户组和访问控制表(ACL)来管理用户

    本教程可以了解如何通过用户组和访问控制表(ACL)来管理用户。
    的头像 发表于 12-25 14:30 3351次阅读
    如何通过用户组和访问控制表(<b class='flag-5'>ACL</b>)来管理用户

    ACL资源不足时该如何去优化?

    很多业务都会占用ACL资源,而设备的ACL资源是有限的,当ACL资源不足时,则会导致业务应用ACL失败或产生ACL资源不足告警。
    的头像 发表于 05-06 10:13 3052次阅读
    <b class='flag-5'>ACL</b>资源不足时该如何去优化?

    将Pmod ACL与Arduino Uno一起使用

    电子发烧友网站提供《将Pmod ACL与Arduino Uno一起使用.zip》资料免费下载
    发表于 11-21 11:18 0次下载
    将Pmod <b class='flag-5'>ACL</b>与Arduino Uno一起使用

    RTL8380M/RTL8382M管理型交换机系统软件操作指南五:ACL/访问控制列表

    接下来将对ACL进行详细的描述,主要包括以下四个方面内容:ACL概述、工作原理、ACL组设置、ACL规则 1.1  ACL概述 访问控制列表
    的头像 发表于 01-09 09:40 795次阅读
    RTL8380M/RTL8382M管理型交换机系统软件操作指南五:<b class='flag-5'>ACL</b>/访问控制列表

    一文详解思科设备ACL与NAT技术

    ACL 访问控制列表(Access Control Lists),是应用在路由器(或三层交换机)接口上的指令列表,用来告诉路由器哪些数据可以接收,哪些数据是需要被拒绝的,ACL的定义是基于协议的,它适用于所有的路由协议,并根据预先定义好的规则对数据包进行过滤,从而更好的控
    的头像 发表于 01-16 11:25 1448次阅读

    什么是ACL?有哪些分类?如何配置?

    ACL本身只能够用于报文的匹配和区分,而无法实现对报文的过滤功能(此功能侧面可以说明ACL可以提高网络的安全性)
    的头像 发表于 04-27 09:17 1.3w次阅读
    什么是<b class='flag-5'>ACL</b>?有哪些分类?如何配置?

    华为企业交换机ACL经典案例

    模拟器有三台主机PC,是PC1,PC2,PC3我们分别使用基本ACL高级ACL和二层ACL来实现一些访问控制,用户可自行体会其中的差别。
    的头像 发表于 08-14 10:19 390次阅读
    华为企业交换机<b class='flag-5'>ACL</b>经典案例

    华为企业交换机ACL设置案例分析

    模拟器有三台主机PC,是PC1,PC2,PC3我们分别使用基本ACL高级ACL和二层ACL来实现一些访问控制,用户可自行体会其中的差别
    发表于 08-14 10:19 624次阅读
    华为企业交换机<b class='flag-5'>ACL</b>设置案例分析

    工业级POE交换机的ACL

    工业级POE交换机通常支持访问控制列表(Access Control List,ACL)功能,用于实施网络安全策略。ACL可以根据源IP地址、目标IP地址、传输协议、端口号等条件来过滤和控制网络流量。
    的头像 发表于 04-17 16:14 93次阅读
    工业级POE交换机的<b class='flag-5'>ACL</b>