我必须开发C API以通过UI APPLICATION使用重新启动功能而不是系统调用和exec函数来关闭Linux系统。This reboot link说,要运行此函数,调用者必须在内部拥有CAP_SYS_BOOT它的用户名称空间。 现在,此功能仅适用于root用户,我也必须对其进行修改以使其也可用于普通用户。如何使用功能在C函数内部设置足够的权限,以便任何用户关闭linux系统?
turnoff()
{
sync();
reboot(RB_POWER_OFF);
}
答案 0 :(得分:1)
您的流程必须具有这种能力;您不能在运行时将其授予自己(这会破坏功能的全部目的)。
使用setcap
设置可执行文件的功能。这通常在安装时完成。以root用户身份:
setcap cap_sys_boot+ep /path/to/your/executable
功能也可以由子进程继承。