特权升级

fork 系统调用创建新进程时,fork 向进程授予与父进程(调用 fork 系统调用的进程)相同的特权。 当某个进程对某个可执行文件执行 exec 系统调用时,exec 根据 exec 当前拥有的特权和该可执行文件拥有的特权重新计算该可执行文件的特权。

将按以下方法计算升级特权:
  1. 首先,计算旧(父)进程拥有的可继承特权与可执行文件拥有的固有特权集合的并集(按位 OR 操作)。
  2. 如果适当地对用户授予了权限,那么将计算前一步骤的结果与授权特权的并集(按位 OR) 。
  3. 如果限制特权存在,那么将计算前一步骤的结果与限制特权的交集。 限制特权(如果存在)是跨 exec 系统调用继承的。
  4. 从该并集得到的特权集合成为新进程的最大特权集合。
  5. 如果可执行文件中存在继承的特权,那么这些特权将被指定给新进程中的可继承特权。 否则,旧(父)进程拥有的可继承特权集合将结转到新进程的可继承特权集合中。

如果可执行文件设置了其 FSF_EPS 文件安全性标志,那么新进程的有效特权集合与其最大特权集合相同。 否则,新进程的有效特权与旧(父)进程拥有的可继承特权相同。