2017-06-15 119 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