Janine: Befehl asuführen

Beitrag lesen

Hi

ich möchte mit ein perl-Programm, welches über ein Apache mit suid ausgeführt wird, die Shell eines Benutzers ändern

my $test = /usr/bin/chsh -s /bin/false benutzer;``
Die Shell des Benutzers wird jedoch nicht geändert.

Wenn ich folgenden Befehl ausführe:
my $test = touch /tmp/test;;
wird die Datei angelegt
-rw-r--r-- 1 root    www         0 24. Mai 02:03 test

Was mache ich falsch?

Mit google habe ich jetzt herausgefunden, dass sich das Problem mit ein C Wrapper lösen läßt

mein C Wrapper sieht wie folgt aus:

#define REAL_PATH "/absoluter/pfad/zur/perl/datei.pl"  
  
int main(int argc, char **argv)  
{  
    setegid(0);  
    seteuid(0);  
    setgid(0);  
    setuid(0);  
    execv(REAL_PATH, argv);  
  
    return 0;  
}

Sollte/Muss ich noch auf etwas anderes achten?

Die Shell wird jetzt per chsh geändert.

Beispiel der perl-Datei

#!/usr/bin/perl -w  
use warnings;  
use strict;  
my $test = `/usr/bin/chsh -s /bin/false benutzer;`;  
print $test;  
exit(0);

Janine