LinuxGod

LinuxGod.net
Linux大神网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

Linux内核和文件系统权限管理的基本用法——ACL权限

2023年1月29日 291点热度

ACL 是什么

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

本文的演示环境为 ubuntu 16.04。

ACL有什么用

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

可以针对用户来设置权限

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

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

检查是否支持ACL

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

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

Defaultmount options: user_xattracl

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

如何设置ACL

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

setfacl

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

linux 用户文件夹权限_linux的每类用户拥有三种权限_linux设置用户组权限

linux的每类用户拥有三种权限_linux 用户文件夹权限_linux设置用户组权限

getfacl

getfacl 文件/目录名

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

针对用户来设置权限

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

$sudo adduser tester

$sudo adduser tester1

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

linux的每类用户拥有三种权限_linux设置用户组权限_linux 用户文件夹权限

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

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

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

$ setfacl -m u:tester:rw aclfile

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

$ ll aclfile

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

$ getfacl aclfile

linux 用户文件夹权限_linux的每类用户拥有三种权限_linux设置用户组权限

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

针对用户组来设置权限

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

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

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

$mkdir mydir

$ll -dmydir

$setfacl -md:u:tester:rwx mydir

$getfacl mydir

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

linux设置用户组权限_linux的每类用户拥有三种权限_linux 用户文件夹权限

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

$touch testfile

$mkdir testdir

$getfacl testfile

$getfacl testdir

linux设置用户组权限_linux 用户文件夹权限_linux的每类用户拥有三种权限

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

linux设置用户组权限_linux的每类用户拥有三种权限_linux 用户文件夹权限

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

更改 ACL 权限

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

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

$ setfacl -m u:tester:rwx aclfile

linux 用户文件夹权限_linux设置用户组权限_linux的每类用户拥有三种权限

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

$ setfacl -m u:tester:rw aclfile

linux的每类用户拥有三种权限_linux设置用户组权限_linux 用户文件夹权限

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

$ setfacl -m g:tester1:rwx aclfile

linux 用户文件夹权限_linux的每类用户拥有三种权限_linux设置用户组权限

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

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

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

linux的每类用户拥有三种权限_linux设置用户组权限_linux 用户文件夹权限

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

linux设置用户组权限_linux 用户文件夹权限_linux的每类用户拥有三种权限

需要注意的是一定要包含 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 的权限信息了:

linux设置用户组权限_linux的每类用户拥有三种权限_linux 用户文件夹权限

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

$ setfacl -b aclfile

linux 用户文件夹权限_linux设置用户组权限_linux的每类用户拥有三种权限

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

备份和恢复 ACL 权限

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

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

linux的每类用户拥有三种权限_linux 用户文件夹权限_linux设置用户组权限

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

$ getfacl -R acldir > acldir.acl

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

$ setfacl -R -b acldir

linux 用户文件夹权限_linux的每类用户拥有三种权限_linux设置用户组权限

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

$ setfacl --restore acldir.acl

linux设置用户组权限_linux 用户文件夹权限_linux的每类用户拥有三种权限

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

【关于投稿】

如果大家有原创好文投稿,请直接给公号发送留言。

①留言格式:

【投稿】+《文章标题》+文章链接

②示例:

【投稿】《不要自称是程序员,我十多年的IT职场总结》:

③最后请附上您的个人简介哈~

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: acl linux文件权限 linux系统 文件目录
最后更新:2023年1月29日

Linux大神网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

Linux大神网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
如何安装便携式WiFi驱动程序?360wifi驱动的教程 CentOS云服务器搭建网站和CentOS搭建DNS解析服务 如何在linux上创建一个用户,减少不必要的沟通成本 如何在Linux系统中查看CPU信息使用lscpu命令行 linux服务器搭建ftp的6下安装vsftpd步骤及步骤 贵州工业职业技术学院求职意向期望工作地--诚聘英才 实验1Linux安装实验掌握虚拟机的使用 Linux系统tar命令的使用方法及使用命令教程 linux 开源nas系统 杰和科技NAS服务器媒体见面会在京召开 Android与Linux开发大不同 Linux系统软件安装包:自己动手,安装不用愁 车市新战局:汽车操作系统会复制智能手机的历史吗? Linux文件系统种类 如何卸载用源码包安装的软件?在线视频教程推荐 「职位」ASP.、PHP、Linux服务器集群开发 Torvalds:Linux内核开发的创新前景充满了热情 Linux文件系统的结构从终端窗口探索Linux目录树结构 卸载软件命令Linux.You linux软件开发如何入门?学习Linux步骤及学习方法介绍 14年Linux发行版的有趣历史观点
嵌入式Linux操作系统学习规划+LINUX路线,主攻江苏电信天翼校园客户端故障指引及解决办法(101)英特尔GMAGMA950显卡驱动程序/WIN8/8.1电信校园网宽带用USB数据线共享给电脑无线上网国防科大开源操作系统:它只是一个吉祥的象征10个常用Linux文本查看命令及其详细说明和使用示例Linux嵌入式系统内核裁剪与定制方法的介绍情况淘宝教育热卖C语言编程开发C++程序设计零基础入门课程从CPU、内存、硬盘、显卡等这些方面安装Linux系统的最低配置Linux通过chkconfig设置开机启动服务创建的几种常见方式(技术分析)Linux多线程的使用与操作系统的区别通常rar命令由一个主命令加若干选项(可选)构成RedHatLinux中自动运行程序中的应用linux 读写文件 关于Linux内核的神秘面纱,你知道几个?使用wget实用程序的有用命令行工具的使用怎么设置linux开机项自启动?方式是怎样的?嵌入式Linux应用层与驱动层要想学习关于Linux内核的交叉编译步骤和方法:步骤、方法STM32嵌入式linux开发流程及应用程序分析-STMlinux下有哪些文件在介绍lsof命令实用用法介绍?
linuxVPS计划任务crond命令的使用方法分享,需要的朋友可以参考下 克隆虚拟机,vmware地址和操作系统中的mac地址 红旗Linux桌面版4.0的安装光盘或镜像文件:安装前准备 linux访问ftp服务器命令 Linux内核层网络编程框架研究(1)_光明网 RedHat查看内核版本和厂商版本1.查看版本的命令 在小米8上使用“原生linux”这条路算是封死了 如何知道自己的Linux内核版本的几种方法?方法 linux光驱启动怎么设置 常见的几种设置方法,你知道几个? 新手读者使用Ubuntu操作系统的下载地址(CentOS和Ubuntu系统) 基于命令修改文件的权限命令-ld Windows远程连接工具、Ubuntu系统的安装软件及系统 Linux中最常见的ls命令的基本格式(有关主目录) lsblk的大小扩容(2)-sh unix操作系统的主要特点表现在哪?-教程操作环境 Linux发行版的学习方法与学习中应该注意的一些事 vmwareworkstation7.1,虚拟机中的系统怎么访问本机数据库? 玩转Linux:换个桌面,畅享不同体验! Linux下的文件一旦被删除,是难以恢复的? 精通unixshell脚本编程之文件描述符数ulimitulimit-n
标签聚合
文件 linux服务器 命令 应用 linux系统 虚拟机 软件 操作 文件目录 内核
书籍
课程
技术群
技术干货大合集↓
  • 2023年9月 / 81篇
  • 2023年8月 / 93篇
  • 2023年7月 / 94篇
  • 2023年6月 / 90篇
  • 2023年5月 / 93篇
  • 2023年4月 / 90篇
  • 2023年3月 / 129篇
  • 2023年2月 / 84篇
  • 2023年1月 / 161篇
  • 2022年12月 / 187篇
  • 2022年11月 / 76篇
友情链接:

Linux书籍 | Linux命令 | Linux系统 | RHCE红帽认证 | Linux软件 | Linux教程 | CentOS系统 | Linux内核 | Linux服务器 | Linux大神 | IT资源

COPYRIGHT © 2023 linuxgod.net ALL RIGHTS RESERVED.