Leser: 22
su - XXX -c 'mein_script.pl'
1 2 3 4 5 6 7 8 9 10 11
#!/usr/bin/perl use strict; use warnings; my $owner = (stat $0)[4]; my $run_by = $<; if( $run_by != $owner ) { print "Hey, das Skript laeuft nicht unter dem Besitzer-Account\n"; }
2010-01-28T11:03:54 TaulmarillSoweit ich das testen konnte, speichert $< die User-ID des laufenden Prozesses. Die wird ja mit su geändert, dafür ist es da.
ps --no-header -o comm $(ps --no-header -o ppid $$)
2010-01-28T11:22:35 betterworldIch wollte jetzt gerade schreiben, dass renee ja gerade deswegen mit der ID der Datei vergleicht. Aber wo ich drueber nachdenke, hast Du recht, denn die IDs sind vermutlich immer gleich, wenn der fremde Benutzer immer "su" auf schuetze09 macht und dem auch die Datei gehoert.
1
2
my $cmd = qq( ssh -n $user " . ./.profile nohup /home/XXX/test.pl");
system($cmd) == 0 || die "$!";
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#!/usr/bin/perl use strict; use warnings; use Proc::ProcessTable; my $proc = Proc::ProcessTable->new(); my ($own)=grep{$$==$_->{pid}}@{$proc->table()}; my ($upper)=grep{$own->{ppid}==$_->{pid}}@{$proc->table()}; if($upper->{fname} eq 'su') { print "running throu 'su' \n"; } else { print "running normal\n"; }
su -c 'sh -e "perl script-pl"'
2010-01-28T14:08:06 topegCode (perl): (dl )my $proc = new Proc::ProcessTable();