【发布时间】:2018-02-20 23:02:29
【问题描述】:
我有一个非root 用户和组的ug+s 可执行文件。我希望它把它原来拥有的所有补充组都抛在后面。有没有办法做到这一点?如果您不是根用户,setgroups 调用似乎不允许您执行此操作。当我尝试它时,我得到EPERM。
似乎应该有一种方法可以让你失去以前拥有的特权。
【问题讨论】:
-
那么,downvoter,这个问题有什么问题?我该如何改进它?求知者想知道。还是您只是喜欢无缘无故地随机投票否决问题?
-
是什么让你觉得
setgroups不能用来做这件事? -
@zwol - 因为我试过了,但它以
EPERM失败。基本上,如果您有 CAP_SETGID,您只能进行该调用,并且由于启动 set{u,g}id 进程的程序是非特权的,并且正在设置 {u,g}id 的用户/组也是非特权,不去。 -
哦,嗯。那......实际上可能意味着没有办法做到这一点。 (我不知道有任何其他系统调用会更改补充组列表。)您是否有能力在不同的内核上尝试该程序,例如 BSD 之一? “我可以在 FooBSD 上做到这一点”比“从来没有办法做到这一点,但我想要一个”更容易卖给内核开发人员。
-
@zwol - 事实证明它是有原因的,如果 FooBSD 不是这样,它应该是:lwn.net/Articles/626665
标签: c linux posix privileges