2017-06-15 115 views
0

在Linux系统中,非root用户创建一个C++程序/进程。此过程具有CAP_DAC_OVERRIDE,CAP_SYS_ADMINCAP_SYS_RAWIO的功能,模式为effective, permitted, inheritable。这些功能附加到一个可以被lxc读取的文件。系统()并继承lxc功能

该进程调用system("dumpe2fs -h /dev/sda1...")来读取有关硬盘上分区的信息。

当它调用system("...")时,创建子进程dumpe2fs。但dumpe2fs似乎并不像预期的那样继承这三项功能。

如何让子进程继承这些功能?

回答

0

“当它调用system(”...“)时,会创建一个子进程dumpe2fs。”

我相信system()调用默认的shell并在其中运行dumpe2fs命令。因此,它不会像在fork()调用中那样是当前进程下直接运行的子进程。

您需要类似execve这样的功能。

你可能想看看其他功能,从这个家庭,以满足您的具体要求: http://man7.org/linux/man-pages/man3/exec.3.html