Linux 权限模型学习笔记

2026-09-01 · 学习Linux

整理一下自己理解的 Linux 权限模型。这块概念不复杂,但细节很多,写下来免得以后又忘。

UID 与进程

Linux 里权限的主体是进程,不是“人”。每个进程带着一组凭证:真实 UID、有效 UID 等。文件上记录的是属主 UID 和属组 GID,内核拿进程凭证和文件权限位做比对,决定放行还是拒绝。

权限位不是全部

经典的 rwx 三位权限只能表达“属主/属组/其他人”三类关系,想要更细的控制得靠 ACL。而 root(UID 0)在内核里基本是一路绿灯——直到 capability 机制把 root 的权力拆成了一颗颗独立的“能力”。

Android 的借用法

Android 直接复用了这套多用户模型:每个应用安装时被分配一个独立的 UID,应用之间的隔离本质上就是 Linux 用户隔离。但应用能访问照片、通讯录这类资源,走的并不是传统文件权限,而是 Binder 之上的权限检查——相当于系统服务当“房东”,按授权把数据“借”给应用看。

一句话总结

UID 决定“你是谁”,权限位和 ACL 决定“你能碰什么”,capability 则把 root 这个超级权限拆细。理解了这三层,Android 的沙箱机制看起来就顺理成章了。