Linux访问控制列表指南
发布时间 - 2025-07-21 00:00:00 点击率:次本文介绍了 linux 访问控制列表 (acl),它提供了比标准 linux 权限更大的灵活性。
对于我们在 Linux 和 Microsoft Windows 之间快速切换的人来说,会发现两者在权限方面的根本差异。标准的 Linux 权限非常简单:指定一个用户、一个组,以及所有其他人(称为“其他人”),并根据需要授予读、写和执行权限。相比之下,Windows 权限要复杂得多,涉及嵌套、更多访问级别以及共享权限的混合。在许多方面,Windows 权限在规模上也更灵活、更实用。
本文介绍了 Linux 访问控制列表 (ACL),它提供了比标准 Linux 权限更灵活的功能。我将讨论如何查看和配置多个个人用户和多个组的 ACL。很有可能,您选择的 Linux 发行版 已经启用了 ACL(ACL 实际上是文件系统的功能)。
简要回顾标准 Linux 权限,您可以使用 chmod 命令配置标准 Linux 权限。该命令设置三种访问级别的任意组合:读、写和执行。您可以将这些访问级别分配给三个身份:
用户(所有者):拥有该文件的单个用户帐户(默认情况下,这是文件创建者)。组:/etc/group 文件中显示的一个用户组。其他:任何不是用户或分配组成员的人。
图 1:ls -l 命令显示标准权限、所有权和组关联。
这种方法在用户和组较少的独立系统上已经足够了。然而,在共享系统、启用了文件共享功能的系统或具有大量 SSH 远程访问的设备上,这种方法会变得更加繁琐。
这就是文件系统 ACL 功能派上用场的地方。它允许您为多个用户和/或组配置不同的访问级别。
ACL 如何提供帮助?ACL 允许您指定多个用户帐户并为它们提供不同的访问级别。这也意味着您不必将其中一个用户的拥有权授予该文件。它对组提供了相同的灵活性。
ACL 仍然识别读、写和执行这三个标准访问级别,因此您不必重新学习您已经了解的关于 Linux 权限的所有内容。实际上,ACL 与标准权限协同工作,因此您仍然可以使用基本的用户 (u)、组 (g) 和其他 (o) 身份。您是在补充常规权限,而不是替换它们。
验证您的发行版是否支持 ACL,当今的现代 Linux 发行版通常开箱即用地支持 ACL。请记住,ACL 是 文件系统 的功能,因此从那里开始。标准文件系统是 ext4、XFS 和 Btrfs。这些都支持 ACL。
您可能不需要检查您的 Linux 发行版是否支持 ACL,但如果您想确认,可以使用以下命令:
tune2fs -l /dev/sda1 | grep -i "Default mount options"
预计在输出中看到 acl。
图 2:tune2fs 命令会显示文件系统设置,包括是否启用了 ACL。
请注意,如果在资源上配置了 ACL,则 ls -l 输出将显示一个 + 字符。在以下示例中,ACL 应用于 file1.txt。
图 3:请注意 file1.txt 的权限字符串末尾有一个 + 字符,表示已应用 ACL。
使用 setfacl 命令
ACL 配置命令是 setfacl。它依赖于标准的 Linux 命令语法:
command -options argument
参数将是您要应用访问控制的文件或目录。
setfacl 命令有许多选项。以下列表包含一些最常见的选项:
m : 修改指定的 ACL。x : 从 ACL 中删除条目。b : 从 ACL 中删除所有条目。d : 为给定目录配置默认 ACL。R : 将 ACL 递归应用于所有目录内容。然而,setfacl 还依赖于其他参数来定义新的访问控制是应用于用户还是组。
u:g:
结合起来,这些设置允许管理员实施更强大、更实用的权限配置。
以下命令示例简要介绍了如何使用 setfacl。更具体的示例将在下一节中介绍。
要为用户 django 配置 ACL,授予其对 sample.txt 资源的读 (r) 权限,请键入:
setfacl -m u:django:r sample.txt
类似的组工程示例如下:
setfacl -m g:engineering:r sample.txt
配置完 ACL 设置后,您需要检查它们是否正确。这就是 getfacl 命令发挥作用的地方。
使用 getfacl 命令管理 ACL 的另一个相关命令是 getfacl,它显示当前的 ACL 设置。
基本语法是 getfacl 和您要查看的文件或目录名称:
getfacl /dev-projects
但是,与大多数 Linux 命令一样,getfacl 支持许多有用的选项来修改其输出。这些包括:
-c:仅显示 ACL 条目,并丢弃额外的标题信息。 -R:递归显示目录内容。 -t:以更易读的表格格式显示输出。在审核或配置访问控制时
,使用 getfacl 来查看 ACL 设置。
图 4:getfacl 命令显示标准 ACL 和 ACL 设置。
ACL 使用案例下面您将找到 ACL 的两个使用案例,包括一个场景和相关的命令。考虑类似的情况可能在您的环境中发生。
场景 1我将从一个简单的例子开始:一个销售团队需要对 /sales 目录具有 rwx 权限,而一个营销团队应该只有 r-x 权限。其他人不需要访问。(请记住,这些组需要执行权限才能进入目录。)
首先,将标准 rwx 权限授予销售团队:
chown -R :sales /saleschmod -R 770 /sales
接下来,为营销团队设置 ACL:
setfacl -m g:marketing:r-x /sales
使用 getfacl /sales 确认您的设置。
请记住,ACL 与标准权限一起工作,因此不要忘记使用 ls -l 命令来考虑这两个系统。但是,getfacl 命令除了 ACL 条目外,还会显示标准权限。
场景 2想象一下另一种情况,您需要向不同的用户和组授予不同级别的访问权限。假设您有一个 /dev-projects 目录,具有以下要求:
所有者:root 具有完全访问权限(rwx)。组:developers 具有完全访问权限(rwx)。额外用户:alex(代码审查者)具有只读访问权限(r-x)。额外用户:silas(项目经理)具有只读访问权限(r-x)。额外组:contract-dev-team 具有只读访问权限(r-x)。标准权限无法满足这种要求,但 ACL 可以轻松地处理它。
首先设置标准权限:
chown -R root:developers /dev-projectschmod -R 770 /dev-projects
接下来,为额外的用户和组配置 ACL 条目:
setfacl -R u:alex:r-x /dev-projectssetfacl -R u:silas:r-x /dev/projectssetfacl -R g:contract-dev-team:r-x /dev/projects
使用 getfacl 和 ls -l 检查结果以显示设置。
总结访问控制列表 (ACL) 扩展了 Linux 权限的功能,允许不同的用户和组具有不同的访问级别。虽然这确实使故障排除更加复杂,但额外的灵活性是值得的。
ACL 功能是文件系统的一部分。当今的现代文件系统支持 ACL,并且可能已经启用了它。请务必创建一个有效利用 ACL 的目录基础结构,通过根据访问要求组织资源。一般来说,销售团队的所有内容都应该存在于一个父目录中,而营销团队所需的所有内容都应该存在于另一个目录中。
ACL 在大型部署中变得尤为重要,例如支持许多用户和资源(具有不同的访问要求)的主要文件服务器。今天检查您的大型部署,看看 ACL 是否可以更有效地控制资源访问。在排查看似神秘的访问问题时,不要忘记考虑 ACL。
# linux
# windows
# django
# 字符串
# 递归
# microsoft
# ssh
# 您的
# 文件系统
# 多个
# 访问控制
# 访问权限
# 的人
# 应用于
# 请记住
# 所有内容
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
再谈Python中的字符串与字符编码(推荐)
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
Python高阶函数应用_函数作为参数说明【指导】
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
高端建站如何打造兼具美学与转化的品牌官网?
php结合redis实现高并发下的抢购、秒杀功能的实例
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
微信推文制作网站有哪些,怎么做微信推文,急?
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
如何在VPS电脑上快速搭建网站?
实例解析angularjs的filter过滤器
如何确保FTP站点访问权限与数据传输安全?
制作旅游网站html,怎样注册旅游网站?
Python函数文档自动校验_规范解析【教程】
长沙企业网站制作哪家好,长沙水业集团官方网站?
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
如何快速打造个性化非模板自助建站?
使用豆包 AI 辅助进行简单网页 HTML 结构设计
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
JavaScript如何实现错误处理_try...catch如何捕获异常?
Laravel如何生成API文档?(Swagger/OpenAPI教程)
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何自定义建站之星模板颜色并下载新样式?
如何快速查询域名建站关键信息?
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
如何快速生成可下载的建站源码工具?
在Oracle关闭情况下如何修改spfile的参数
如何在万网自助建站中设置域名及备案?
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
如何确认建站备案号应放置的具体位置?
Laravel如何集成Inertia.js与Vue/React?(安装配置)
Laravel如何使用Sanctum进行API认证?(SPA实战)
java获取注册ip实例
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
js实现点击每个li节点,都弹出其文本值及修改
🚀拖拽式CMS建站能否实现高效与个性化并存?
如何在服务器上三步完成建站并提升流量?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
如何用西部建站助手快速创建专业网站?
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】

