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