2017-06-15 9 views
0

Linuxシステムでは、root以外のユーザーがC++プログラム/プロセスを作成します。このプロセスは、CAP_DAC_OVERRIDE,CAP_SYS_ADMINおよびCAP_SYS_RAWIOのモードでeffective, permitted, inheritableの機能を持ちます。これらの機能は、lxcで読み取れるファイルに添付されています。system()およびlxc機能を継承します

このプロセスは、ハードディスク上のパーティションに関する情報を読み取るためにsystem("dumpe2fs -h /dev/sda1...")を呼び出します。

system("...")を呼び出すと、子プロセスdumpe2fsが作成されます。しかし、dumpe2fsは、期待通りに3つの機能を継承していないようです。

どのように子プロセスに機能を継承させることができますか? "(...")、それはシステムを呼び出すと、 "

答えて

0

、子プロセスは、dumpe2fsが作成されます。"

system()はデフォルトのシェルを呼び出し、dumpe2fsコマンドを実行すると思います。したがって、fork()呼び出しのように、現在のプロセスで直接実行されている子プロセスではありません。

これにはexecveのような機能が必要です。

あなたはあなたの特定の要件を満たすために、この家族から他の機能を見てみたいことがあります http://man7.org/linux/man-pages/man3/exec.3.html

関連する問題