以下是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. HMM - (补充) 参数求解之 F/B 算法细节

    回顾 上篇通过EM算法思想来求解 HMM 的参数 \(\theta=(\pi, A,B)\) 即 初始状态概率(向量), 状态转移概率(矩阵), 发射概率矩阵. 在上帝视角, 即已知隐变量 Z , 则 ...

  2. React-Native开发鸿蒙NEXT-权限处理

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  3. A* 合集

    板子那篇烂尾了,等 \(25\) 年 \(csp\) 时再继续写吧 CF1620E Replace the Numbers 点击查看代码 #include<bits/stdc++.h> u ...

  4. 深入理解Nginx-模块开发与架构解析(第2版)第二章

    Nginx的配置 运行中Nginx进程间的关系 # 为什么产品环境下安装master-worker方式配置同时启动多个进程? - master进程不会对用户提供服务,只用于管理真正提供服务的worke ...

  5. vivo Pulsar万亿级消息处理实践(1)-数据发送原理解析和性能调优

    作者:vivo 互联网大数据团队- Quan Limin 本文是vivo互联网大数据团队<vivo Pulsar万亿级消息处理实践>系列文章第1篇. 文章以Pulsar client模块中 ...

  6. 对比分析LinkedBlockingQueue和SynchronousQueue

    缘起 最近在 review 同事代码时,看到其使用了org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor 来构建线程池,而没 ...

  7. 网络策略NetworkPolicy

    网络策略 在 Kubernetes 里,网络隔离能力的定义,是依靠一种专门的 API 对象来描述的,即: NetworkPolicy. Kubernetes 里的 Pod 默认都是"允许所有 ...

  8. es常用命令

    删除索引某个字段时间范围的数据 curl -XPOST "http://127.0.0.1:9200/event_log_hulianwang_v3/event_log_hulianwang ...

  9. 数据库的DML与DQL语句

    1: DML语句 ​ insert into values 1 insert into 表 values(值1,值2,值n); 2 insert into 表(字段1,字段2,字段n) values( ...

  10. kubernetes如何将pod运行在master节点

    一.简单说明 这里我们部署的Kubernetes集群,master节点默认是unscheduled的状态,也就是默认拒绝将Pod调度到master节点运行.专业术语就是:Master节点被赋予了一个或 ...