Linux ACL权限详细分析

您所在的位置:网站首页 沈阳情侣约会的最佳地 Linux ACL权限详细分析

Linux ACL权限详细分析

#Linux ACL权限详细分析| 来源: 网络整理| 查看: 265

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 ACL 权限的全部内容

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

扫一扫,分享给好友

复制链接分享 评论

发布评论请先 登录

相关推荐

基础的Linux操作命令 IC设计是在linux环境下,很多操作需要在Terminal中进行,因此想要学习IC设计,就必须先需.... 的头像 FPGA之家 发表于 03-15 13:42 • 54次 阅读 BPF系统调用与Tracing类型的BPF程序 既然是提供向内核注入代码的技术,那么安全问题肯定是重中之重。平时防范他人通过漏洞向内核中注入代码,这.... 的头像 Linux阅码场 发表于 03-14 16:42 • 206次 阅读 盘点5款值得收藏的Linux开发板 最近股市又哀鸿遍野……于是,那句 “树莓派是最好的理财产品”又开始在我耳边萦绕。“缺芯”笼罩之下,开.... 的头像 话说科技 发表于 03-14 15:12 • 173次 阅读 盘点5款值得收藏的Linux开发板 霍尼韦尔智能楼宇技术助力小镇建设_ADI为Linux发行版扩充1000多个器件驱动  2022年2月11日,中国北京——霍尼韦尔宣布与中建二局安装工程有限公司和北京市设备安装工程集团有.... 的头像 电子魔法师 发表于 03-14 15:04 • 287次 阅读 i.MX6ULL嵌入式Linux开发5-根文件系统完善 上篇文章,使用BusyBox构建了基础的嵌入式Linux系统的根文件系统,基本的功能可以正常运行,但.... 的头像 码农爱学习 发表于 03-14 08:44 • 103次 阅读 i.MX6ULL嵌入式Linux开发5-根文件系统完善 i.MX6ULL嵌入式Linux开发4-根文件系统构建 本篇使用BusyBox来构建根文件系统,并通过NFS网络调试的方式实现根文件系统挂载测试,实测时解决.... 的头像 码农爱学习 发表于 03-14 08:41 • 113次 阅读 i.MX6ULL嵌入式Linux开发4-根文件系统构建 i.MX6ULL嵌入式Linux开发3-Kernel移植 本文进行Linux内核的移植。 的头像 码农爱学习 发表于 03-14 08:36 • 96次 阅读 i.MX6ULL嵌入式Linux开发3-Kernel移植 有没有能用在51单片机平台上的语音芯片? 最近看了一下云知声的蜂鸟M系列的离线语音,但是研究了半天不知道能不能移植到51单片机的平台上(就是通过串口通讯),后来又看... 发表于 03-11 17:08 • 621次 阅读 Tina Linux 系统介绍 Tina Linux是全志科技基于Linux内核开发的针对智能硬件类产品的嵌入式软件系统。Tina Linux基于openwrt-14.07 版本的软件开... 发表于 03-11 15:05 • 1782次 阅读 提高Linux服务器性能的20个技巧  Linux功能丰富、强大、灵活,你可以用它完成各种任务,在这篇文章中,我们将讨论一些提高Linux.... 的头像 Linux爱好者 发表于 03-11 10:14 • 120次 阅读 51点灯与Linux驱动点灯的区别 嵌入式初学者入门的第一个“项目”就是LED点灯,那么,本文带你看看51、STM32、Linux点灯有.... 的头像 strongerHuang 发表于 03-10 17:37 • 1255次 阅读 为VisionFive星光板上创建Debian系统镜像 在RISC-V 星光板VisionFive上创建Debian/Linux系统 发表于 03-09 20:52 • 4次 阅读 为VisionFive星光板上创建Debian系统镜像 Linux内核代码修改将为性能测试获8450%提升 Jason Donenfeld 是 WireGuard 的主要开发者,同时他也是 Linux 内核随.... 的头像 马哥Linux运维 发表于 03-09 14:16 • 183次 阅读 怎样去搭建基于rk3288的android(和linux)平台软件运行环境呢 怎样去搭建基于rk3288的android(和linux)平台软件运行环境呢?有哪些搭建步骤呢?... 发表于 03-09 07:42 • 175次 阅读 怎样将linux debian串口波特率统一改到115200呢 如何对linux debian源码进行重新编译呢? 怎样将linux debian串口波特率统一改到115200呢? ... 发表于 03-09 07:31 • 215次 阅读 Arm linux 单板接入阿里云物联网实现 近年来物联网深入生活中的方方面面,万物互联。阿里云物联网平台是一个集成了设备管理、数据安全通信和消息订阅等能力的一体化平... 发表于 03-09 07:27 • 821次 阅读 RK3328 linux命令是怎样进入gpio口的呢 怎样去查看RK3328主板的gpio口呢? RK3328 linux命令是怎样进入gpio口的呢? ... 发表于 03-09 07:09 • 124次 阅读 YoC开发环境设置手册 一、前言 根据开发用户组的不同,YoC 支持在 Linux 命令行环境和 Windows CDK IDE 中进行开发。本节介绍如何在 W... 发表于 03-09 07:02 • 375次 阅读 Linux驱动程序支持通过I2C和SPI总线进行通信吗 Linux驱动程序支持哪些设备呢? Linux驱动程序支持通过I2C和SPI总线进行通信吗? ... 发表于 03-09 06:33 • 92次 阅读 YoC系统编译用户手册 作者:夏朗 一、前言 YoC系统在不同的开发环境下编译方式不同。通常,在 Windows 上使用 IDE 进行开发是简单明了的。... 发表于 03-09 06:26 • 281次 阅读 如何对RK3399 Android7.1进行编译呢 怎样去设置Linux编译环境呢?如何对RK3399 Android7.1进行编译呢?有哪些编译步骤? ... 发表于 03-09 06:14 • 116次 阅读 Linux私房菜基础篇-第三版 Linux私房菜基础篇-第三版免费下载。 发表于 03-07 16:46 • 34次 阅读 《Linux命令行大全》(英文版) [美]William E. Shotts Jr. 著 发表于 03-07 16:29 • 17次 阅读 i.MX6ULL嵌入式Linux开发2-uboot移植实践 上篇文章,我们介绍了如何使用NXP原厂的uboot进行编译和烧写,将uboot运行在自己的开发板上。.... 的头像 码农爱学习 发表于 03-07 09:00 • 1637次 阅读 i.MX6ULL嵌入式Linux开发2-uboot移植实践 i.MX6ULL嵌入式Linux开发1-uboot移植初探 本系列教程以i.MX6ULL处理器的ARM开发板为实验基础,学习记录嵌入式Linux开发的各种知识与.... 的头像 码农爱学习 发表于 03-07 08:57 • 1153次 阅读 i.MX6ULL嵌入式Linux开发1-uboot移植初探 万象奥科RZ G2L核心板高低温测试 评估测试RZ/G2L核心板环境适应性,测试低温启动、高温工作、高低温循环状态下的工作情况。 的头像 武汉万象奥科 发表于 03-03 15:27 • 10次 阅读 万象奥科RZ G2L核心板高低温测试 RZ G2L核心板以太网接口性能测试 武汉万象奥科RZ/G2L核心板支持2路千兆以太网接口,评估测试RZ/G2L双网口实际传输速率。 的头像 武汉万象奥科 发表于 03-03 14:04 • 10次 阅读 RZ G2L核心板以太网接口性能测试 RZ/G2L核心板功耗测试 测试RZ/G2L核心板静态功耗与CPU满负载时的负载功耗,辅助产品设计中的散热方案评估。 的头像 武汉万象奥科 发表于 03-03 11:35 • 9次 阅读 RZ/G2L核心板功耗测试 linux常用命令大全 linux常用命令大全,一些常用的命令都可以找到 发表于 03-03 09:20 • 40次 阅读 为什么要在汽车上使用SOA架构 整车E/E架构升级,硬件架构上从分布式ECU向域集中式,进一步向中央集中式+区域控制器升级; 发表于 03-02 09:15 • 54次 阅读 为什么要在汽车上使用SOA架构 瑞萨电子推出64位RISC-V CPU内核RZ/Five通用MPU,开创RISC-V技术先河 瑞萨电子今日宣布,推出基于64位RISC-V CPU内核的RZ/Five通用微处理器(MPU)——R.... 发表于 03-01 13:54 • 614次 阅读 瑞萨电子推出64位RISC-V CPU内核RZ/Five通用MPU,开创RISC-V技术先河 keil5+STM32F103C8T6设计的智能插座+人体感应灯 支持跨平台编译运行 这是基于STM32设计的智能插座+人体感应灯。SRM32F103C8T6最小系统板、红外热释电人体感.... 的头像 DS小龙哥-嵌入式技术 发表于 02-28 13:19 • 1438次 阅读 keil5+STM32F103C8T6设计的智能插座+人体感应灯 支持跨平台编译运行 迅为iTOP-STM32MP157开发板 迅为ITOP-STM32MP157是基于ST的STM32MP157芯片开发的一款开发平台。在STM3.... 发表于 02-23 14:43 • 18次 阅读 迅为STM32MP157开发板入门教程之外设功能验证 迅为STM32MP157开发板入门教程之外设功能验证 的头像 平常心0 发表于 02-23 14:16 • 27次 阅读 迅为STM32MP157开发板入门教程之外设功能验证 国产平台T3如何快速部署电力能源神器-Docker容器 前 言随着电网数据信息化的深入,电网的各种应用服务增长迅速,原有应用服务部署方式面临着资源利用率低、.... 的头像 Tronlong创龙科技 发表于 02-17 13:56 • 24次 阅读 国产平台T3如何快速部署电力能源神器-Docker容器 Petalinux2020.01 内核DMA驱动调试说明 Petalinux2020.01 内核DMA驱动调试过程分享 的头像 赛灵思 发表于 02-16 16:21 • 116次 阅读 为什么要用C语言实现面向对象   不知道有多少人去了解过语言的发展史,早期C语言的语法功能其实比较简单。随着应用需求和场景的变化,.... 的头像 硬件攻城狮 发表于 02-16 16:19 • 389次 阅读 为什么要用C语言实现面向对象 Linux编程入门 Linux编程入门 发表于 02-16 14:55 • 59次 阅读 如何配置和操作Linux驱动程序开发板 本文档概述了利用Linux开发板为 Linux 内核开发驱动程序的基础知识,并简单介绍了如何配置和操.... 的头像 德州仪器 发表于 02-15 13:36 • 331次 阅读 如何配置和操作Linux驱动程序开发板 选型必备!最新最全的工业核心板目录大全来了!! 随着嵌入式技术的发展,越来越多的处理器应运而生。除了国外的主流半导体厂家,国内的半导体厂家也异军突起.... 的头像 Tronlong创龙科技 发表于 02-15 09:30 • 25次 阅读 选型必备!最新最全的工业核心板目录大全来了!! 一文详细了解五种IO模型 五种IO模型包括:阻塞IO、非阻塞IO、IO多路复用、信号驱动IO、异步IO。 的头像 硬件攻城狮 发表于 02-14 14:38 • 492次 阅读 一文详细了解五种IO模型 Linux总线、设备、驱动模型的探究 Linux总线、设备、驱动模型的探究 发表于 02-14 12:01 • 56次 阅读 Cortex-M可以跑Linux操作系统吗? ARM处理器的体系结构定义了指令集(ISA)和基于这一体系结构下处理器的模型。ARM的指令集从ARM.... 发表于 02-08 15:55 • 38次 阅读 Cortex-M可以跑Linux操作系统吗? Wiley.Linux.Bible.2010.Edition电子教材分享 Wiley.Linux.Bible.2010.Edition电子教材分享 发表于 02-08 15:55 • 38次 阅读 51、STM32、Linux点灯有什么区别? 嵌入式初学者入门的第一个“项目”就是LED点灯,那么,本文带你看看51、STM32、Linux点灯有.... 发表于 02-08 15:32 • 88次 阅读 51、STM32、Linux点灯有什么区别? U-Boot架构浅析 导读:嵌入式Linux系统搭建,bootloader是必不可少的一环,而U-Boot已成嵌入式Lin.... 发表于 02-07 11:56 • 49次 阅读 U-Boot架构浅析 深度解析U-Boot网络实现 对于U-Boot而言,并没有完整的实现上述模型,u-boot需要控制固件的尺寸,所以根据需要做了一些.... 发表于 02-07 11:53 • 43次 阅读 深度解析U-Boot网络实现 阅读内核系列之内核调度器为何全局导出 [导读] Linux内核代码庞大,阅读内核书籍总觉得云山雾绕,纸上得来终觉浅,希望通过阅读代码撰写笔.... 发表于 02-07 11:49 • 34次 阅读 阅读内核系列之内核调度器为何全局导出 关于MMU那些事儿 如果我们一直是单任务处理,则不会有任何问题,也或者应用程序所需的内存总是非常小,则这种架构是不会有任.... 发表于 02-07 11:27 • 35次 阅读 关于MMU那些事儿 如何使用v4l2 API读取摄像头 V4L2是Video For Linux的第二个版本,它是Linux的视频捕获的API。在这里,您可.... 发表于 02-07 11:16 • 28次 阅读 如何使用v4l2 API读取摄像头 上古神器vim系列之初探 [导读] 一直以来VIM也用一些,但是用的不熟,最近看了些文章,发现这个东西有必要发大力气系统的练习.... 发表于 02-07 11:13 • 48次 阅读 上古神器vim系列之初探 openwifi的射频配置和数字中频设计 这里介绍openwifi项目([链接])的射频和数字中频设计的一些考虑。这些内容也都在openwif.... 发表于 02-07 11:06 • 22次 阅读 openwifi的射频配置和数字中频设计 没有键盘显示器,也能使用EAIDK-310? 近期有部分小伙伴表示,收到了购买的EAIDK-310开发套件。但是,自己只有一台笔记本电脑,如何才能.... 发表于 02-07 11:06 • 16次 阅读 没有键盘显示器,也能使用EAIDK-310? 深入解析Linux下 Platform_device 及Platform_driver [导读] 前文分析了Linux设备驱动的驱动模型,本文来聊聊Platform_driver/Plat.... 发表于 02-07 10:10 • 65次 阅读 深入解析Linux下 Platform_device 及Platform_driver RT-Thread学习笔记分享 我是从2020年11月初开始学习RT-Thread实时操作系统的,在学习RT-Thread之前,我接.... 的头像 RTThread物联网操作系统 发表于 01-27 18:52 • 647次 阅读 openwifi OFDM接收机信道估计优化 openwifi的接收机一直性能比较弱。具体表现就是如果测量吞吐,那么下行(流量方向是openwif.... 发表于 01-26 18:06 • 43次 阅读 openwifi OFDM接收机信道估计优化 基于RK3399微服务器,移植gmrender-resurrect,实现QPlay 首先感谢网友的文章分享《云芯一号试用---更新固件方法+支持wifi》,之前板子无法连接WIFI,导.... 发表于 01-26 17:42 • 48次 阅读 基于RK3399微服务器,移植gmrender-resurrect,实现QPlay 在云芯一号中安装Python3和HomeAssistant 第一步:安装Python3打开Linux系统命令行窗口,输入:sudo apt-get instal.... 发表于 01-26 17:40 • 43次 阅读 在云芯一号中安装Python3和HomeAssistant 云芯一号优缺点 微服务转型给我们带来了一系列的问题,严格的部署微服务集群需要的物理机成倍增加,云服务器厂商低价引诱上.... 发表于 01-26 17:38 • 42次 阅读 云芯一号优缺点 彻底弄懂TCP协议:从三次握手说起 说到 TCP 协议,相信大家都比较熟悉了,对于 TCP 协议总能说个一二三来,但是 TCP 协议又是.... 发表于 01-26 17:23 • 36次 阅读 彻底弄懂TCP协议:从三次握手说起 AM4379 AM437x ARM Cortex-A9 微处理器 (MPU) TI AM437x高性能处理器基于ARM Cortex-A9内核。 这些处理器通过3D图形加速得到增强,可实现丰富的图形用户界面,还配备了协处理器,用于进行确定性实时处理(包括EtherCAT,PROFIBUS,EnDat等工业通信协议)。该器件支持高级操作系统(HLOS)。基于Linux的® 可从TI免费获取。其它HLOS可从TI的设计网络和生态系统合作伙伴处获取。 这些器件支持对采用较低性能ARM内核的系统升级,并提供更新外设,包括QSPI-NOR和LPDDR2等存储器选项。 这些处理器包含功能方框图中显示的子系统,并且后跟相应的“说明”中添加了更多信息说明。 处理器子系统基于ARM Cortex-A9内核,PowerVR SGX™图形加速器子系统提供3D图形加速功能以支持显示和高级用户界面。 可编程实时单元子系统和工业通信子系统(PRU-ICSS与ARM内核分离,允许单独操作和计时,以实现更高的效率和灵活性.PRU-ICSS支持更多外设接口和EtherCAT,PROFINET,EtherNet /IP,PROFIBUS,以太网Powerlink,Sercos,EnDat等... 发表于 09-25 11:51 • 530次 阅读 AM4379 AM437x ARM Cortex-A9 微处理器 (MPU)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3