UNIX的等价物CreateProcessWithLogonW
问题描述:
我拥有的:UNIX用户(爱丽丝)的登录名/密码。UNIX的等价物CreateProcessWithLogonW
我是谁:其他一些UNIX用户(bob)。
我需要做的是:作为其他用户(爱丽丝)以编程方式启动进程(foo)。
最终结果应该是什么:如果完成了“ps”,则进程正在运行并显示alice作为所有者。为了特权的目的,就好像爱丽丝开始它一样。
基本上我需要编写一些代码,做的“苏-c‘富’ - 爱丽丝相当于”
理想我不想设置任何特殊位或权限上有问题的可执行文件(富)。
答
我看到只有两种可能性在UNIX/Linux上从bob拥有的进程中启动一个进程,使其不能setuid本身。
- 调用setuid程序
- 与一个已经运行的进程进行通信,可以切勿启动过程爱丽丝
答
说永远,但我觉得这恐怕是不可能在任何UNIX移植的方式。 setuid(2)调用(和朋友)只有在当前uid与目标uid相同(模仿有效和真实uid的一些细微差别)或当前uid为0(即root)时才会成功。也就是说,您不能从一个非root用户更改为另一个。
拥有密码并没有帮助。该密码用于初始对系统的身份验证,无论是通过login
,ssh
还是某些GUI登录对话框,但密码仅由这些程序单独关注,而不是系统本身。换句话说,内核并不关心你的密码,而是内核,如果你想改变你的uid,你必须与之交谈。
也就是说,您可能因此有必要考虑间接路线,例如Peter G提到的路线。
(是的,一些unix可能有这样做的方法,但这是平台特定的)。
我知道我没有在这里增加任何积极的建议,只有可能省时的负面建议'没什么在这里看到;向右移动...'
+1:注意在第二种情况下,该过程必须已经以爱丽丝或根的方式运行。第三种可能是maaaaaaaybe fork和exec'login',但是因为_really_想和终端通话,所以我怀疑这会很快变得非常混乱。 – 2010-07-20 21:06:57