Linux功能是否对可能的特权操作进行分区?

时间:2018-03-14 18:48:23

标签: linux linux-kernel linux-capabilities

更准确地说,是否有任何操作可以使用多个功能为进程提供必要的权限?

1 个答案:

答案 0 :(得分:2)

简短的回答是肯定的。

我认为总体模型是每个操作都由一个功能保护。但是,肯定有例外。通过内核/目录一目了然,我很快找到了一个例子。 usermodehelper sysctl处理程序需要CAP_SETPCAP和CAP_SYS_MODULE功能才能更新其设置。

需要考虑的另一个因素是:能力检查遍及整个内核代码,包括众多驱动程序。驱动程序编写者可以选择以他们认为最好的方式检查功能,因此很可能需要调用者拥有多种功能。

最后,还有许多其他情况,即单个操作可能使用多于一个功能,即使它基本上只需要一个。例如,考虑一个系统调用,它需要一个功能作为基础,但也需要一个操作的路径名参数。我找到了示例:pr_ctl系统调用选项PR_SET_MM和子选项PR_SET_MM_EXE_FILE。此调用需要CAP_SYS_RESOURCE基础。但是,它还需要对文件具有某些权限。但是,如果主叫用户没有正确的凭据来访问该文件,则如果呼叫者具有CAP_DAC_OVERRIDE功能,则可以覆盖该权限。