gpt4 book ai didi

c++ - 如何正确丢弃能力?

转载 作者:太空狗 更新时间:2023-10-29 21:42:36 26 4
gpt4 key购买 nike

在 C++ 程序中,我需要以下功能:

dac_覆盖setuid设置标识符根

我不需要其他任何东西,我想立即将它们放入程序中,然后再放下其他的。

这样做的正确方法是什么?

为清楚起见编辑:

所以,我有 root,这实际上只是一堆功能。我的程序几乎不需要这些上限中的任何一个,所以除了我提到的四个外,我想放弃所有上限。我相信这样做的方法是使用类似的东西:

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");

我得到一个错误。我仍然可以 chroot。

最佳答案

我想通了。这里最好的方法是使用 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);

关于c++ - 如何正确丢弃能力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25704105/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com