以下是CentOS系统中传统UGO权限管理与ACL权限管理的详细对比及其结合应用场景的解析,附实际案例说明:


​一、传统UGO权限管理​

​1. 核心机制​

  • ​权限模型​​:将用户分为三类:

    • ​User (u)​​:文件所有者,拥有最高控制权。
    • ​Group (g)​​:文件所属用户组的成员。
    • ​Others (o)​​:既非所有者也非组成员的用户。
  • ​权限类型​​:

    • ​读 (r)​​:查看文件内容或目录列表(数值4)。
    • ​写 (w)​​:修改文件或增删目录内容(数值2)。
    • ​执行 (x)​​:运行程序或进入目录(数值1)。
  • ​权限表示​​:

    -rwxr-xr--   # 所有者:读写执行(rwx=7);组:读执行(r-x=5);其他:只读(r--=4)

​2. 操作命令​

  • ​修改权限​​:

    chmod u+x file.txt      # 为所有者添加执行权限(符号模式)
    chmod 754 file.txt # 数字模式:u=rwx(7), g=r-x(5), o=r--(4)
  • ​修改归属​​:

    chown user:group file  # 同时修改所有者和属组
    chgrp developers dir/ # 仅修改目录的属组

​3. 局限性​

  • ​无法精细化控制​​:例如,需授权多个不同用户不同权限时,UGO仅支持一个组,无法单独设置非组内用户的权限。

​二、ACL权限管理:UGO的扩展​

​1. 核心优势​

  • ​多用户/组控制​​:可对任意用户或组单独授权,突破UGO的三类限制。

  • ​权限优先级​​:ACL规则优先于UGO规则(如ACL拒绝某用户访问,即使UGO的others有权限也无效)。

​2. 操作命令​

  • ​设置ACL​​:

    setfacl -m u:alice:rw file.txt  # 授予alice读写权限
    setfacl -m g:hr:rx dir/ # 授予hr组读执行权限
  • ​查看与删除​​:

    getfacl file.txt                # 查看所有ACL规则
    setfacl -x u:alice file.txt # 删除alice的ACL规则
    setfacl -b file.txt # 清除所有ACL规则

​3. 特殊机制:ACL掩码(Mask)​

  • ​作用​​:限制​​额外用户/组​​的最大权限(不影响所有者)。
    setfacl -m m::r file.txt  # 设置掩码为只读,则额外用户即使被赋rwx也仅生效r

​三、UGO与ACL对比总结​

​特性​ ​UGO​ ​ACL​
控制粒度 粗粒度(三类用户) 细粒度(任意用户/组)
多用户支持 仅一个组 支持多用户、多组
权限优先级 基础规则 高于UGO
适用场景 简单权限分配(如私有文件) 复杂共享(如团队协作目录)
管理复杂度 简单(chmod/chown) 较高(需setfacl/getfacl)

​四、结合应用场景与案例​

​场景1:共享研发目录(精细化控制)​

  • ​需求​​:目录 /project 需允许:

    • 所有者 dev_lead 完全控制。
    • developers 可读写。
    • 外部测试员 tester1 仅可读。
  • ​解决方案​​:

    # 设置基础UGO权限
    chown dev_lead:developers /project
    chmod 770 /project # 组内可读写,其他无权限
    # 添加ACL规则
    setfacl -m u:tester1:r-x /project # 单独授予tester1读和执行(进入目录)
    setfacl -m m::rx /project # 限制额外用户最大权限为读执行

​场景2:Web服务器目录(安全隔离)​

  • ​需求​​:网站目录 /var/www/html

    • 用户 apache 需读写权限(写入日志/上传)。
    • 开发者组 web_dev 需读写,但禁止执行脚本(防漏洞)。
  • ​解决方案​​:

    # 基础权限:所有者可读写执行,组可读写,其他无权限
    chmod 750 /var/www/html
    # ACL细化
    setfacl -m g:web_dev:rw /var/www/html # 组可读写
    setfacl -m d:g:web_dev:rw /var/www/html # 默认规则(新文件继承)
    find /var/www/html -type f -name "*.php" -exec chmod -x {} \; # 禁用PHP执行

​场景3:敏感文件保护(结合特殊权限)​

  • ​需求​​:配置文件 /etc/app.conf 需:

    • 拒绝所有非root用户的修改(包括所有者)。
    • 允许应用用户 app_user 只读。
  • ​解决方案​​:

    # 锁定文件(禁止任何修改)
    chattr +i /etc/app.conf # 使用chattr加锁
    # 授予app_user只读(ACL优先)
    setfacl -m u:app_user:r /etc/app.conf

​五、最佳实践建议​

  1. ​最小权限原则​​:优先用UGO满足基础需求,复杂场景叠加ACL。

  2. ​权限继承​​:ACL的默认规则(如 setfacl -d)确保新文件自动继承父目录权限。

  3. ​定期审计​​:通过 getfacl 检查权限分布,避免冗余规则。

  4. ​特殊权限慎用​​:SUID/SGID(如 chmod u+s)可能导致提权漏洞,非必要不启用。

️ ​​注意​​:ACL权限在 ls -l 显示中末尾出现 + 标记(如 drwxr-x---+),此时需用 getfacl 查看完整规则。

通过结合UGO的简洁性与ACL的灵活性,可高效实现从简单到复杂的权限管控,同时兼顾安全性与可维护性。

传统UGO权限+ACL权限管理结合 控制权限案例分析的更多相关文章

  1. Linux权限及归属管理 磁盘管理 文件系统 LVM管理

    第五六七章   alias 查看系统别名   67 chmod 设置文件或目录的权限 -R表示以递归的方式设置目录及目录下的所有子目录及文件的权限 u:属主 g:属组 o:其他人 a:所有人 +:添加 ...

  2. Linux系统管理第五六七章 权限及归属管理 磁盘管理 文件系统与lvm

    第五六七章   alias 查看系统别名   67 chmod 设置文件或目录的权限 -R表示以递归的方式设置目录及目录下的所有子目录及文件的权限 u:属主 g:属组 o:其他人 a:所有人 +:添加 ...

  3. ClickHouse学习系列之六【访问权限和账户管理】

    背景 在之前写的文章[用户权限管理]里已经介绍了应该如何设置用户密码以及权限控制.但是只是针对修改配置文件的方式来进行用户权限管理,其实ClickHouse也支持基于RBAC(Role-Based A ...

  4. Linux UGO和ACL权限管理

    自主访问控制(Discretionary Access Control, DAC)是指对象(比如程序.文件.进程)的拥有者可以任意修改或者授予此对象相应的权限.Linux的UGO(User, Grou ...

  5. linux入门系列9--用户管理及文件权限控制

    ​ 前面文章分享了Linux下常用命令以及Shell编程相关知识,本节继续学习Linux用户管理及文件权限控制. ​ Linux是多用户多任务操作系统,具有很好的稳定性和安全性.既然是多用户,那就意味 ...

  6. linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制)

    linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制) 发表于2012//07由feng linux 本身的ugo rwx的权限,对于精确的权限控制很是力不从心的,ac ...

  7. Linux_CentOS用户管理 和 用户权限管理 chmod、ACL、 visudo

    一.用户管理 Linux 系统同时可以支持多个用户,每个用户对自己的文件设备有特殊的权利,能够保 证用户之间互不干扰.就像手机开了助手一样,同时登陆多个 qq 账号,当硬件配置非常高 时,每个用户还可 ...

  8. 【Linux】 Linux权限管理与特殊权限

    Linux权限管理 权限管理这方面,非常清楚地记得刚开始实习那会儿是仔细研究过的,不知道为什么没有笔记留痕..除了一些基本的知识点早就忘光了,无奈只好从头开始学习一遍.. ■ 基本权限知识 这部分实在 ...

  9. linux用户权限 -> ACL访问控制

    UGO设置基本权限: 只能一个用户,一个组和其他人 ACL设置基本权限: r.w.x 设定acl只能是root管理员用户. 相关命令: getfacl , setfacl facl权限 简介 facl ...

  10. linux权限管理之基本权限

    基本权限 UGO ======================================================== 文件权限设置: 可以赋于某个用户或组 能够以何种方式 访问某个文件 ...

随机推荐

  1. 21C++数组(2)

    一.字符数组的输入与输出   (第65课 采访报道) 教学视频   大惊小怪报和小惊大怪报是两家全球性的报社,发表的文章全用英文.因风之巅小学的信息学社团开展得很出色,于是两家报社都派记者前来采访,大 ...

  2. 问题描述:libGL.so.1: cannot open shared object file: No such file or directory

    问题截图: 在实验室服务器上跑代码,报如上错误 解决方案: sudo apt update sudo apt install libgl1-mesa-glx 因遇见多次该错误,特此记录下 (据说该问题 ...

  3. 我的白板工具支持 Markdown 转思维导图啦!

    朋友们好,我的开源在线白板工具又更新啦,这次支持了 markdown 文本转思维导图的功能,可以将多级标题.多级列表等转化为思维导图,这次对于 markdown 转思维导图功能的主要识别父子关系 + ...

  4. 多级菜单(java GUI)

    话不多说,先来效果: 源码如下: package javaBasic; import java.awt.*; import javax.swing.*; import java.awt.event.* ...

  5. 【语义分割专栏】:FCN实战篇(附上完整可运行的代码pytorch)

    目录 前言 FCN全流程代码 模型搭建(model) 数据处理(dataloader) 评价指标(metric) 训练流程(train) 模型测试(test) 效果图 结语 前言 FCN原理篇讲解:[ ...

  6. RL之深夜有感

    世界似乎就是一个巨大的强化学习环境(Env),身处其中的每个人就是里面的智能体,有的为生计四处奔波:有的要探寻精神上的欢娱:有的似乎想跳出Env,不想再继续下去了:可以说每个人的target都不尽相同 ...

  7. GStreamer开发笔记(五):gstreamer创建组件、管道和总线实现简单的播放器

    前言   前面是自动构建管道.本篇实例化每个元素并将它们链接在一起来手动构建一个管道.  本篇创建管道分为:创建组件,连接组件,获取总线,阻塞提取需要的消息并处理.   Demo      管道图   ...

  8. 理论+实操|一文掌握 RFM 模型在客户数据洞察平台内的落地实战

    确定用户价值是整个用户运营过程中极其重要的一环.传统的工作流程中,业务人员向数据部门提出数据需求,等待返回结果后再进行价值分析是主要的准备工作,但这个过程非常耗时.为了提高工作效率,业务人员经常会基于 ...

  9. hot100之矩阵

    矩阵置零(073) 先看代码 class Solution { public void setZeroes(int[][] matrix) { boolean col0_flag = false; i ...

  10. 查看Linux配置信息

    cat gitlab.rb |grep -v "^[#,;]" |grep -v "^$"