Créer un processus dont l’utilisateur et l’utilisateur sont différents

Quelqu’un pourrait-il aider à trouver un moyen de créer un processus dont l’utilisateur et l’utilisateur sont différents? Actuellement, j’ai utilisé la ligne

sudo su david -c ./test.pl 

Puis quand j’ai tapé la ligne suivante pour obtenir l’utilisateur et le 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 

L’utilisateur et l’utilisateur sont toujours les mêmes. Je dois créer un processus comme l’exemple suivant:

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

Des pensées? Merci!

Vous pouvez le faire depuis le script perl en définissant la variable spéciale $ < .

Voici un exemple:

 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 $$"); 

Cela imprime les éléments suivants:

 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 

La seule façon de le faire en dehors du code est via setuid. Le bit setuid est ignoré dans les scripts sous Linux, ce qui n'est pas possible avec perl.

Il y a aussi le module sys :: process, qui encapsule ceci pour vous:

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