Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何正确删除功能? 在C++程序中,我需要的能力:_C++_Linux - Fatal编程技术网

如何正确删除功能? 在C++程序中,我需要的能力:

如何正确删除功能? 在C++程序中,我需要的能力:,c++,linux,C++,Linux,dac_覆盖 设置用户标识符 塞吉德 克洛特 我不需要任何其他人,我想在程序中立即删除他们,然后在以后删除其他人 这样做的正确方法是什么 为清晰起见,请编辑: 所以,我有根,它实际上只是一堆功能。我的程序几乎不需要这些上限中的任何一个,所以除了我提到的四个之外,我想放弃所有的上限。我相信这样做的方法是做一些事情,比如: prctl(PR_CAPBSET_DROP,CAP_SYS_CHROOT, 0, 0, 0); 但当我这么做的时候 if(prctl(PR_CAPBSET_READ,CAP_S

dac_覆盖 设置用户标识符 塞吉德 克洛特

我不需要任何其他人,我想在程序中立即删除他们,然后在以后删除其他人

这样做的正确方法是什么

为清晰起见,请编辑:

所以,我有根,它实际上只是一堆功能。我的程序几乎不需要这些上限中的任何一个,所以除了我提到的四个之外,我想放弃所有的上限。我相信这样做的方法是做一些事情,比如:

prctl(PR_CAPBSET_DROP,CAP_SYS_CHROOT, 0, 0, 0);
但当我这么做的时候

if(prctl(PR_CAPBSET_READ,CAP_SYS_CHROOT, 0, 0, 0) == 1)
    err(0, "CAP_SYS_CHROOT drop fail");

我犯了个错误。而且我仍然可以启动。

我已经解决了这个问题。这里最好的方法是使用libcap ng

下面的代码适合我

capng_clear(CAPNG_SELECT_BOTH);
capng_updatev(CAPNG_ADD, (capng_type_t)(CAPNG_EFFECTIVE | CAPNG_PERMITTED), CAP_SETUID, CAP_SETGID, -1);
capng_apply(CAPNG_SELECT_BOTH);