2

ruser と user が異なるプロセスを作成する方法を見つけるのを手伝ってくれませんか? 現在、私はラインを使用しました

sudo su david -c ./test.pl

次に、次の行を入力してユーザーとユーザーを取得すると

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 

user と ruser は同じままです。次のサンプルのようなプロセスを作成する必要があります。

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

何かご意見は?ありがとう!

4

2 に答える 2

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 からは不可能です。

于 2013-03-07T01:48:27.093 に答える
0

これをカプセル化する sys::process モジュールもあります。

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

于 2013-03-07T03:36:52.963 に答える