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 testWas 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