创建一个其标识符和用户不同的进程

时间:2013-03-07 01:25:39

标签: linux perl unix

有人可以帮忙找到一种方法来创建一个其用户和用户不同的流程吗?    目前,我使用了

sudo su david -c ./test.pl

然后当我键入以下行以获取用户和ruser

ps -eo pid,user,ruser,fname,pcpu,nice,stime,time | grep test.pl
10322   david   david test.pl 12.4 20 13:37:00 01:38 

用户和ruser仍然相同。 我需要创建一个类似以下示例的流程:

ps -o user,ruser,comm -p 59515
    USER    RUSER COMMAND
    root csrethab xscreensaver 

有什么想法?    谢谢!

2 个答案:

答案 0 :(得分:2)

您可以通过设置特殊$< variable

在perl脚本中执行此操作

以下是一个例子:

system("ps -eo pid,user,ruser,fname,pcpu,nice,stime,time | grep $$");
$< = 1000;
print "Changed\n";
system("ps -eo pid,user,ruser,fname,pcpu,nice,stime,time | grep $$");

这将打印以下内容:

22460 root     root     perl      0.0   0 20:46 00:00:00
Changed
22460 root     jordan   perl      0.0   0 20:46 00:00:00

在代码之外执行此操作的唯一方法是通过setuid。在linux中的脚本中会忽略setuid位,因此perl不可能这样做。

答案 1 :(得分:0)

还有sys :: process模块​​,它为你封装了这个:

https://metacpan.org/pod/sys::process::user#SYNOPSIS