news 2026/6/15 10:12:31

【Linux 基础知识系列:第二百零九篇】Linux 文件系统 ACL 权限配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Linux 基础知识系列:第二百零九篇】Linux 文件系统 ACL 权限配置

一、简介:为什么除了 chmod 还要学 ACL?

  • 传统权限 3×3 模型(user/group/other)够用吗?

    • 同一目录下,多部门共享→ 需要第 4 组、第 5 组不同权限。

    • 文件服务器 → 某些用户只读,某些用户可写,但不能改属组

    • Docker 卷映射 → 容器内 UID 与宿主机不一致,chmod 777 太粗暴

ACL(Access Control List)=给文件/目录再打“补丁权限”不改动原属主/属组支持单用户、单组独立授权可继承
掌握getfacl/setfacl=让 Linux 权限真正“随心所欲”


二、核心概念:5 个名词先搞懂

名词一句话示例
ACL 条目一条权限规则 = 类型 + 名称 + 权限user:alice:rw-
Access ACL文件的 ACL(仅作用自身)-rw-r--r--++
Default ACL目录的默认 ACL,新文件自动继承default:user:bob:r--
mask上限掩码,决定最大有效权限(除 owner/other)mask::rwx
ACL 类型u用户、g组、m掩码、o其他setfacl -m u:alice:rw file

口诀:看到+号 = 文件带 ACL;getfacl一目了然


三、环境准备:3 分钟搭好“ACL 实验室”

1. 系统要求

  • 内核 ≥ 2.6(CentOS 6+/Ubuntu 12+ 均满足)

  • 文件系统支持:ext4、xfs、btrfs、tmpfs ✅;fat32、exfat ❌

  • 挂载选项:默认已启 ACL,如未启手动加mount -o remount,acl /

2. 检查与启用(可复制)

# 查看分区是否支持 ACL tune2fs -l /dev/sda1 | grep -i acl # ext4 看到 Default mount options: acl mount | grep acl # 无输出也正常,现代发行版默认开启 # 若未启用,临时开启 sudo mount -o remount,acl / # 永久开启:编辑 /etc/fstab 在对应行加 ,acl 然后 remount

3. 实验账号(一次性创建)

sudo groupadd sales && sudo groupadd tech sudo useradd -G sales alice && sudo useradd -G tech bob echo "123456" | sudo passwd --stdin alice # CentOS echo -e "123456\n123456" | sudo passwd alice # Ubuntu

四、命令与示例:由浅入深 6 大关卡

所有命令可直接复制,在~/acl-lab目录执行。

mkdir -p ~/acl-lab && cd ~/acl-lab

4.1 基本语法:setfacl / getfacl 速查

功能命令模板示例
添加/修改setfacl -m <条目> <路径>setfacc -m u:alice:rw file
删除单条setfacl -x <条目> <路径>setfacl -x u:alice file
清空所有setfacl -b <路径>setfacl -b file
查看getfacl <路径>getfacl file

4.2 文件级 ACL:给单用户开小灶

# 1. 创建测试文件 echo "Salary 2025" > salary.txt chmod 640 salary.txt # 传统权限:owner=rw, group=r, other=0 # 2. 让 alice(非属主)也能读 setfacl -m u:alice:r-- salary.txt # 3. 验证 getfacl salary.txt # 输出: # user::rw- # user:alice:r-- ← 新增条目 # group::r-- # mask::r-- # other::---

场景:财务文件,不能让 alice 改属组,又要给她只读


4.3 目录级 ACL + 默认继承:多部门共享

# 1. 创建共享目录 sudo mkdir -p /srv/shared sudo chown root:sales /srv/shared sudo chmod 770 /srv/shared # 2. 技术组 tech 需要读写 sudo setfacl -m g:tech:rwx /srv/shared # 3. 设置默认 ACL,**以后新建文件自动继承** sudo setfacl -d -m g:tech:rwx /srv/shared sudo setfacl -d -m u:alice:rw- /srv/shared # 4. 验证 touch /srv/shared/newfile.txt getfacl /srv/shared/newfile.txt # 看到 default: 条目已复制为 Access ACL

结果

  • 无论谁在哪创建文件,tech组始终rwxalice始终rw-


4.4 mask 演示:别被“上限”坑了

setfacl -m u:alice:rwx file chmod 640 file # 传统思维:group 从 rw- → r-- getfacl file # 输出: # user:alice:rwx # 有效 rwx # mask::r-- # ← 被 chmod 同步缩小! # 实际 alice 只有 r-- (mask 拦截)

结论

  • chmod自动同步 mask;想保留完整 ACL,用setfacl -n禁止 mask 重算。


4.5 备份与还原 ACL:批量迁移必备

# 1. 导出 getfacl -R /srv/shared > shared.acl # 2. 复制到目标机 rsync -av /srv/shared remote:/srv/ rsync shared.acl remote:/tmp/ # 3. 远端还原 ssh remote 'cd /srv && setfacl --restore=/tmp/shared.acl'

场景

  • 文件服务器整机迁移,权限零丢失


4.6 一键脚本:自动给网站目录加“运维只读”

#!/bin/bash # script: web_acl.sh WWW=/var/www/html OPS user=ops1 # 运维账号只读 setfacl -R -m u:${OPS user}:r-X $WWW # 默认继承 setfacl -R -d -m u:${OPS user}:r-X $WWW echo "OPS 只读 ACL 完成"

保存后chmod +x web_acl.sh && sudo ./web_acl.sh运维审计再也不怕误改


五、常见问题与解答(FAQ)

问题现象解决
setfacl: Operation not supported文件系统在 FAT32换 ext4/xfs,或 `mountgrep acl` 确认
chmod 000 file后 alice 还能读?能,ACL 不受 other 影响如要禁用,用setfacl -b file再 chmod
cp file newfileACL 消失?默认 cp 不保留cp --preserve=acl file newfile
mv会丢 ACL 吗?同分区内保留;跨分区丢失跨分区用tar --aclsrsync -A
查看大量目录眼花?一行太长`getfacl -cp /dirgrep -v "^#"` 去注释

六、实践建议与最佳实践

  1. 约定大于配置
    共享目录统一放/srv/部门名默认 ACL 模板化,新人 1 分钟上手。

  2. 权限最小化
    先给r-X(目录执行位),确需写再单独加w

  3. 定期审计
    getfacl -R /srv > acl_$(date +%F).backup,Git 保存,差异一目了然。

  4. 与 chmod 混用顺序
    先 chmod 设基础,再 setfacl 打补丁,避免 mask 误杀。

  5. 容器场景
    Docker 卷加 ACL 需宿主机同样支持,挂载时加:Z不会清 ACL(SELinux 标签另论)。

  6. nfs 导出
    服务端/etc/exportsno_acl强制禁用,记得删除以保留 ACL。


七、总结:一张脑图带走全部要点

Linux ACL ├─ 命令:setfacl / getfacl / -m / -x / -b / -d ├─ 对象:文件 Access ACL + 目录 Default ACL ├─ 条目:u:用户 g:组 m:mask o:other ├─ 场景:多部门共享、运维审计、容器卷 └─ 最佳:模板化 + 审计 + tar --acls 迁移

掌握 ACL,你就拥有了:

  • 比 chmod 更细的权限粒度,不改属主/属组也能灵活授权

  • 多用户、多部门共享时的“免争吵”方案

  • 备份迁移、容器、NFS 全场景零权限丢失的底气

立刻打开终端,输入setfacl -m u:$USER:rw .,给你的第一个文件打上 ACL 补丁——真正的“权限自由”从这里开始!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 15:41:16

HTML5正则验证:5分钟搞定表单自定义规则,告别繁琐代码

在网页开发中&#xff0c;表单数据的验证是保障数据质量和应用安全的关键环节。HTML5通过引入一系列内置的验证属性和对正则表达式的原生支持&#xff0c;为前端验证提供了更为简洁、高效的实现方式。它允许开发者直接在标记中定义规则&#xff0c;提升了开发效率与用户体验&am…

作者头像 李华
网站建设 2026/6/15 13:20:31

LangFlow镜像教程:从零开始构建你的第一个AI工作流

LangFlow镜像教程&#xff1a;从零开始构建你的第一个AI工作流 在大语言模型&#xff08;LLM&#xff09;技术席卷各行各业的今天&#xff0c;越来越多团队希望快速验证一个智能客服、知识问答或自动化助手的原型。但现实往往令人望而却步——LangChain虽然功能强大&#xff0c…

作者头像 李华
网站建设 2026/6/15 13:20:04

LangFlow镜像性能测试报告:响应速度与资源占用实测

LangFlow镜像性能测试报告&#xff1a;响应速度与资源占用实测 在AI应用开发日益普及的今天&#xff0c;一个常见的痛点浮出水面&#xff1a;如何让非程序员也能快速构建可运行的大模型流程&#xff1f;尤其是在企业创新实验室、高校教学或咨询项目中&#xff0c;等待工程师编码…

作者头像 李华
网站建设 2026/6/15 8:40:10

为什么头部电商都在悄悄部署Open-AutoGLM?真相令人震惊

第一章&#xff1a;为什么头部电商都在悄悄部署Open-AutoGLM&#xff1f;近年来&#xff0c;头部电商平台纷纷在智能客服、商品推荐与运营文案生成等关键场景中引入 Open-AutoGLM&#xff0c;这一开源自动化大语言模型正悄然成为提升运营效率与用户体验的技术利器。其核心优势在…

作者头像 李华
网站建设 2026/6/15 10:11:29

Open-AutoGLM核心算法曝光:如何精准理解用户情绪并智能回应?

第一章&#xff1a;Open-AutoGLM电商评价自动回复技术概述Open-AutoGLM 是一种基于生成式语言模型的智能回复系统&#xff0c;专为电商平台设计&#xff0c;用于自动化处理用户评价并生成语义准确、情感得体的响应内容。该技术融合了自然语言理解&#xff08;NLU&#xff09;与…

作者头像 李华
网站建设 2026/6/15 13:19:31

Open-AutoGLM实战指南(电商优惠券自动化全解析)

第一章&#xff1a;Open-AutoGLM实战指南&#xff08;电商优惠券自动化全解析&#xff09;在电商平台运营中&#xff0c;优惠券的精准发放与使用分析直接影响用户转化与复购率。Open-AutoGLM 作为一款基于大语言模型的自动化决策引擎&#xff0c;能够结合用户行为数据动态生成优…

作者头像 李华