如何使用CAP_SYS_BOOT功能?

时间:2018-11-30 02:10:35

标签: c linux

我必须开发C API以通过UI APPLICATION使用重新启动功能而不是系统调用和exec函数来关闭Linux系统。This reboot link说,要运行此函数,调用者必须在内部拥有CAP_SYS_BOOT它的用户名称空间。 现在,此功能仅适用于root用户,我也必须对其进行修改以使其也可用于普通用户。如何使用功能在C函数内部设置足够的权限,以便任何用户关闭linux系统?

turnoff() 
{
  sync();
  reboot(RB_POWER_OFF);
}

1 个答案:

答案 0 :(得分:1)

您的流程必须具有这种能力;您不能在运行时将其授予自己(这会破坏功能的全部目的)。

了解capabilities(7)

使用setcap设置可执行文件的功能。这通常在安装时完成。以root用户身份:

setcap cap_sys_boot+ep /path/to/your/executable

功能也可以由子进程继承。