这是对我正在研究的系统的描述:
root用户的身份运行。root用户权限。第三点显然使我的应用程序(让我们称它为“player”)具有安全风险,因此一种解决方案是创建一个单独的用户和组,比如'worker‘,然后将'player’进程派生为该用户。
具体实施情况如下:
chown二进制文件(player.out)给worker用户和组chown worker:worker player.outchmod a+s player.out在其上设置SUID位。setregid()和setreuid将RUID设置为与EUID相同的值: if(setregid(getegid(),getegid()) != 0) { if(setreuid(geteuid(),geteuid()) != 0) {}我的问题分两部分:
root拥有,并被称为setuid应用程序,以表示(可能)它们的权限被提升到根用户,而不管哪个用户调用程序。编辑:我应该澄清,我没有控制产生其他进程的“经理”进程。我只能控制我的player应用程序。
发布于 2014-02-19 11:07:22
--编辑1
因此,您的经理(作为真实有效的uid=0运行)启动player,而您编写/控制播放器(而不是管理器)。如果您没有做什么特别的事情,那么player将与real+effective uid=0一起运行,并且您希望防止这种情况发生。
您只需切换uid在播放器,没有SUID位的播放器,不需要。
发布于 2014-02-19 11:19:25
通常的方法是主进程分叉、删除功能或更改其用户ID,然后执行新进程。
https://unix.stackexchange.com/questions/115873
复制相似问题