UNIX相当于CreateProcessWithLogonW

时间:2010-07-20 17:23:36

标签: unix process impersonation

我拥有:UNIX用户的登录名/密码(alice)。

我是谁:其他一些UNIX用户(bob)。

我需要做什么:以编程方式(foo)以其他用户(alice)启动流程。

最终结果应该是:进程正在运行并在完成“ps”时显示alice作为所有者。出于特权的目的,就好像alice一样。

基本上我需要写一些与“su -c'foo'相当的代码 - alice”

理想情况下,我不想在有问题的可执行文件(foo)上设置任何特殊位或权限。

2 个答案:

答案 0 :(得分:1)

我看到只有两个可能在UNIX / Linux上启动一个进程,因为bob拥有的进程无法自行设置。

  • 致电setuid计划
  • 与已经运行的进程进行通信,该进程可以像alice一样启动进程

答案 1 :(得分:1)

永远不要说永远,但我认为这可能是任何unix-portable方式都不可能的。 setuid(2)调用(和朋友)只有在当前uid与目标uid相同时才会成功(以有效和真实uid为模的一些细微模数)或当前uid为0(即root)。也就是说,您无法从一个非root uid更改为另一个。

拥有密码没有帮助。密码用于系统的初始身份验证,无论是通过loginssh还是某些GUI登录对话,但密码是这些程序的关注点单独,而不是系统本身。换句话说,内核并不关心你的密码,如果你想改变你的uid,那就是你必须与之交谈的内核

也就是说,您可能因此不得不考虑间接路线,例如Peter G所提到的路线。

(是的,有些unix可能有办法这样做,但这是特定于平台的。)

我知道我在这里没有添加任何积极的建议,只有可能省时的负面建议“没有什么可看的;向右移动......'