为什么`sched_setscheduler()`需要root权限?

时间:2014-12-29 18:43:44

标签: c linux linux-kernel root

为什么sched_setscheduler()需要root priveledges?

我正在编写一些可以从设置SCHED_FIFO中获益的代码。但是,如果我使用sched_setscheduler(),我现在必须要求以root身份运行此过程。为什么不允许在没有root权限的情况下运行sched_setscheduler()

2 个答案:

答案 0 :(得分:5)

大概是因为使用实时调度程序的进程可以完全接管一台机器,而不是让CPU进入其他进程 - 普通用户不应该有权这样做。

Linux允许您进行比以root身份运行更细粒度的控制,但您可以使用以下命令在可执行文件上设置CAP_SYS_NICE capability(以root用户身份完成一次):

 setcap cap_sys_nice+ep ./your_program  

即使它不以root用户身份运行,也允许您的可执行文件使用sched_setscheduler。

答案 1 :(得分:2)

因为它允许你的进程改变其他进程获得的CPU数量,这可能会被滥用。