Hi!
#!/usr/bin/perl -w
use strict;
use CGI::Carp qw(fatalsToBrowser);my $Vergleich = system("chmod 0777 /home/gruppen/");
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Test-Ausgabe</title></head><body>\n";
print $Vergleich."\n";
if($Vergleich == 0) {
print "Alles in Ordnung!\n";
}
else {
print "Nix gudd!\n";
}
print "</body></html>\n";Bei Ausführung mit einem Browser hat der Perl-Interpreter den system-Befehl nicht ausgeführt, anstatt dessen erhalte ich folgende Meldung am Bildschirm:
256 Nix gudd!
Unter welcher Benutzerkennung läuft denn der Apache? CGI-Programme werden nämlich - sofern man nicht sowas wie suexec einsetzt - auch unter der Kennung des Apache-Benutzers ausgeführt. Dieser ist mit großer Sicherheit nicht der Besitzer des Ordners /home/gruppen, sodass dein Unterfangen bereits aufgrund fehlender Rechte fehlschlägt.
Rufe ich das gleiche Programm jedoch über die Bash-Befehlszeile auf, dann funktioniert es.
linux:/srv/www/cgi-bin # /usr/bin/perl -w ./bs4.pl
Content-type: text/html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>Test-Ausgabe</title></head><body>
0
Alles in Ordnung!
</body></html>
Soweit ich mich erinnern kann, ist das oben der Standard-Prompt für den User »root« unter SuSE - insofern ist es auch nicht verwunderlich, dass ein entsprechendes chmod dann auch klappt.
Grüße,
Fabian St.