我拥有:UNIX用户的登录名/密码(alice)。
我是谁:其他一些UNIX用户(bob)。
我需要做什么:以编程方式(foo)以其他用户(alice)启动流程。
最终结果应该是:进程正在运行并在完成“ps”时显示alice作为所有者。出于特权的目的,就好像alice一样。
基本上我需要写一些与“su -c'foo'相当的代码 - alice”
理想情况下,我不想在有问题的可执行文件(foo)上设置任何特殊位或权限。
答案 0 :(得分:1)
我看到只有两个可能在UNIX / Linux上启动一个进程,因为bob拥有的进程无法自行设置。
答案 1 :(得分:1)
永远不要说永远,但我认为这可能是任何unix-portable方式都不可能的。 setuid(2)调用(和朋友)只有在当前uid与目标uid相同时才会成功(以有效和真实uid为模的一些细微模数)或当前uid为0(即root)。也就是说,您无法从一个非root uid更改为另一个。
拥有密码没有帮助。密码用于系统的初始身份验证,无论是通过login
,ssh
还是某些GUI登录对话,但密码是这些程序的关注点单独,而不是系统本身。换句话说,内核并不关心你的密码,如果你想改变你的uid,那就是你必须与之交谈的内核。
也就是说,您可能因此不得不考虑间接路线,例如Peter G所提到的路线。
(是的,有些unix可能有办法这样做,但这是特定于平台的。)
我知道我在这里没有添加任何积极的建议,只有可能省时的负面建议“没有什么可看的;向右移动......'