gpt4 book ai didi

c - 如何在 Linux 中删除补充组?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:04:54 26 4
gpt4 key购买 nike

我有一个ug+s 的可执行文件给非root 用户和组。我希望它能把它原来拥有的所有补充组都留在后面。有没有办法做到这一点?如果您不是 root,它看起来不像是 setgroups 调用允许您执行此操作。当我尝试时,我得到了 EPERM

似乎应该有一种方法可以失去您以前拥有的特权。

最佳答案

简短的回答是“没有 CAP_SETGID 的进程不能。”。它是by design that setgroups can't be used to remove groups when the process has no privileges .上一个链接指向一篇出色的 LWN 文章,详细说明了为什么不这样做。

在我的特定情况下,由于我立即创建了一个用户命名空间,所以这些补充组无论如何都会映射到“nobody”。所以这不是很重要。如果重要可以用setcap(8)在包装器可执行文件上设置功能,检查它是否由具有预期组权限的预期用户运行,然后删除组并删除 CAP_SETGID 并运行您真正想要运行的可执行文件。您将用来执行此操作的命令是:

sudo setcap cap_setgid+ep wrapper_exe

但要小心,如果您编写得不仔细的话,现在有可能在您的系统上拥有 shell 的人可以使用该可执行文件来运行某种特权升级攻击。

关于c - 如何在 Linux 中删除补充组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48895619/

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