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