08-获取和修改进程凭证
9.7 获取和修改进程凭证
为了获取和变更本章已然论及的各种用户 ID 和组 ID,Linux提供了一系列系统调用和库函数。SUSv3仅对这些API中的部分做了规范,余下部分中,有一些在其他UNIX实现中得以广泛应用,还有少量是Linux所特有的。在讨论每个API接口时,将特别指出可移植性方面的问题。在本章结尾处,表9-1总结了变更进程凭证的所有接口操作。
可以利用Linux系统特有的proc/PID/status文件,通过对其中Uid、Gid和Groups各行信息的检查,来获取任何进程的凭证,这与下面即将介绍的系统调用有异曲同工之妙。Uid和Gid各行,按实际、有效、保存设置和文件系统ID的顺序来展示相应标识符。
在下列章节中所论及的特权级进程,其定义是基于传统意义上的,即进程的有效用户ID为0。然而,正如第 39 章所述,Linux将超级用户权限划分成多种各不相同的能力(capability)。在讨论修改用户ID和组ID的所有系统调用时,将涉及其中的两种。
- CAP_SETUID能力允许进程任意修改其用户ID。
- CAP_SETGID能力允许进程任意修改其组ID。