加载中...
Linux能力机制将传统超级用户root的全能特权拆分为多个独立的细粒度能力,进程可以只被授予完成任务所需的部分特权,从而遵循最小权限原则,降低安全风险。

| 中文名 | 能力机制 |
| 英文名 | Capabilities |
| 所属 | Linux内核 |
| 设计原则 | 最小权限 |
| 典型能力 | CAP_NET_BIND_SERVICE |
Linux能力机制(Capabilities)是一种将传统root用户的完整特权划分为若干独立单元的机制,每个单元称为一项能力,进程可以只持有其中一部分,而不必获得全部超级用户权限。
在传统Unix权限模型中,权限检查是二元的:要么是普通用户,要么是无所不能的root(UID 0)。这带来一个问题:某个程序哪怕只需要绑定特权端口,也往往被赋予完整root权限,一旦被攻破后果严重。Capabilities把root的特权拆分成几十项独立能力,例如绑定低端口、修改文件属主、加载内核模块等,使权限授予更加精细。
能力机制广泛用于容器和服务加固。Docker默认丢弃大部分能力,只保留容器运行必需的少数几项;systemd可通过配置为服务限定能力集;网络工具如ping改用CAP_NET_RAW文件能力,不再需要setuid root。数据库、Web服务器等长驻服务也常借此在绑定端口后放弃多余特权。
问:CAP_SYS_ADMIN为什么被称为新的root?答:它涵盖的操作过于宽泛,几乎等同于完整管理权限,授予它往往意味着放弃了细粒度控制的意义,应尽量避免。
问:能力机制能完全取代root吗?答:在很多场景可以显著减少对完整root的依赖,但部分底层操作仍需要多项能力组合,合理设计能力集才能真正实现最小权限。

| 中文名 | 能力机制 |
| 英文名 | Capabilities |
| 所属 | Linux内核 |
| 设计原则 | 最小权限 |
| 典型能力 | CAP_NET_BIND_SERVICE |
登录 后参与讨论
暂无讨论,来发表第一条评论吧