Linux的能力模型,将传统的 all-or-nothing UNIX权限模型划分为一个个能单独启用或禁用的能力。能力模型允许程序在执行一些特权操作的同时防止它们执行其他未经允许的操作

基本原理

    传统的 UNIX 权限模型将进程分为两类:1️⃣ 能通过所有权限检测的有效用户ID为 0的进程,2️⃣ 需要根据用户和组ID进行权限检测的进程。

这种模型所存在的问题是,它的划分过于粗粒度

   如果需要允许一个进程执行一些只有超级用户才能执行的操作—— 如修改系统时间 —那么就必须要让进程的有效用户 ID 为 0。一旦如此,则赋予了进程执行其他操作的权限,为安全问题埋下了隐患。

  因此,Linux能力模型进行了优化处理,即 **在内核中执行安全性检测时不再使用单个权限(即有效用户ID 为 0 ),而是将超级用户权限划分为了不同的单元**,该单元就称为 **能力**。

<aside> 📢 Linux当中的特权进程 其实是指 拥有相应能力来执行特定操作的进程。

</aside>

   **在大多数时候,Linux 能力模型对程序员来讲是不可见的,其原因是当一个对能力一无所知的应用程序的有效用户 ID 为 0 时,内核会赋予该进程所有能力。**

进程和文件能力

进程能力

    每个进程有3个相关能力集 —— **许可的、有效的、可继承的**。每个文件也可以拥有3个相关能力集,其名称与进程的能力集名称一样。