Linux 权限
为了执行权限检查,传统的 UNIX 实现区分了两类进程:特权进程(其有效 UID 为 0)和非特权进程(其有效 UID 为非零)。特权进程绕过所有内核权限检查,而非特权进程则根据进程的凭据(通常:有效 UID、有效 GID 和补充组列表)进行完全权限检查
Linux 权限分为以下几种机制:
机制 | 用途 |
UGO | 传统的 User-Group-Other 权限机制 |
ACL | ACL 是 UGO 权限的补充。提供了更宽、更细粒度的权限控制 |
Capabilities | Capabilities 对 Root 权限进行拆分。从而避免使用 Root 用户 |
SeLinux | SeLinux 是 MAC 的一种 |
Apparmor | Apparmor 是 MAC 的一种 |
PAM | PAM 为用户身份验证提供了支持 |
UGO 权限
Capabilities
Linux 将超级用户拥有的权限进行拆分,称为 Capabilities。Capabilities 是线程和文件的属性。
更改文件的 Capabilities 需要进程拥有 CAP_SETFCAP 权限。
文件的 Capabilities 拥有三个功能集:
功能 | 解释 |
| 此集合中的能力必定可为线程所用 |
| 文件和线程的此集合进行与计算后得到的能力才是线程可用的 |
|
例如如果需要一个程序获得发送 ICMP 包的能力 :
sudo setcap cap_net_raw+ep some_program