Zum Inhalt springen

CGI Skripte mit root rechten ausführen


sombrero2007

Empfohlene Beiträge

Hi @all,

ich bin gerade dabei ein paar Skripte zu Enwickeln, die den Status bestimmter dienste abfragen. Jetzt habe ich das Problem, dass wenn ein Skript aufgerunfen wird mit dem wwwrun User ausgefürht wird.

Wie kann ich die Skripte mit root-Rechten laufen lassen?

Das Skript sieht wie folgt aus:

#!/usr/bin/perl



use strict;


# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Variablen ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


my $ServicesDirectory="/etc/init.d/rc3.d";		# Verzeichnis in dem sich die zu Startenden Dienste befinden



# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Hauptprogramm ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


print"<table border=1 align=center>";

print"<center><h1>Auswertung Dienste</h1></center>";


my @service = <$ServicesDirectory/S*>;

foreach my $service (@service){

        $service=~s/$ServicesDirectory\///;

        next if "$service" =~ "S[0-9]*bigbrother" 		|| 

        "$service" =~ "S[0-9]*hwscan" 			|| 

        "$service" =~ "S[0-9]*learnvipa" 		||

        "$service" =~ "S[0-9]*fbset" 			|| 

        "$service" =~ "S[0-9]*rpmconfigcheck" 	|| 

        "$service" =~ "S[0-9]*smbfs" 			|| 

        "$service" =~ "S[0-9]*nfs" 				|| 

        "$service" =~ "S[0-9]*nfsboot" 			|| 

        "$service" =~ "S[0-9]*splash_early" 	|| 

        "$service" =~ "S[0-9]*running-kernel" 	|| 

        "$service" =~ "S[0-9]*kbd"				|| 

        "$service" =~ "S[0-9]*splash" 			|| 

        "$service" =~ "S[0-9]*ITCAM" 			||

        "$service" =~ "S[0-9]*rebootmail"		||

        "$service" =~ "S[0-9]*dsmcad"			||

        "$service" =~ "S[0-9]*custstart";



        $service=~s/S[0-9]*/rc/; 	# Sxx nach rc wandeln (z.B. S016apache --> rcapache)


        my $ServiceStatus=`$service status >/dev/null && echo OK || echo FEHLER`;


        #print "$service ==> $ServiceStatus\n";


        #print "<br>";



        if ($ServiceStatus eq "OK"){  

                $service=~s/rc//;

                print "<tr>

                <td>$service</td>  	

                <td bgcolor=#00FF00>ok</td>


                </tr>";	

        }

        elsif($ServiceStatus eq "FEHLER"){

                $service=~s/rc//;

                print "<tr>

                <td>$service</td>  	

                <td bgcolor=#ff0000>FEHLER</td>


                </tr>";	


        }

}

print "</table>";

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

1) denke drüber nach, ob du das wirklich willst

2) wenn du zu dem Schluss kommst, dass du das willst, dann hast du nicht richtig nachgedacht

3) falls du es dennoch willst ist SUID root dein Freund (siehe chown & chmod). Aendere die Rechte deines Perl-Scriptes.

ciao,

victorinox.

Link zu diesem Kommentar
Auf anderen Seiten teilen

1) denke drüber nach, ob du das wirklich willst
Warum sollte ich das nicht wollen?

2) wenn du zu dem Schluss kommst, dass du das willst, dann hast du nicht richtig nachgedacht

Kannst du mir das näher begründen? Hast du vielleicht eine andere oder bessere Lösung?

3) falls du es dennoch willst ist SUID root dein Freund (siehe chown & chmod). Aendere die Rechte deines Perl-Scriptes.
Werde ich mir mal anschauen, danke für den Tipp.
Link zu diesem Kommentar
Auf anderen Seiten teilen

CGI-Scripten root-Rechte zu geben ist ein Security-Deasaster.

Es braucht nur einen Fehler zu enthalten und dein gesamtes System kann kompromitiert werden. Daher solltest du das wirklich vermeiden.

SUID-Root ist übrigens auch nicht wirklich besser :rolleyes:

Wenn du unbedingt eine bestimmte Aktion als root ausführen willst solltest du sudo verwenden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

Warum sollte ich das nicht wollen?

Enormes Sicherheitsrisiko. (siehe Setuid - Wikipedia)

Wenn es im Intranet steht und du es mit htaccess absicherst und nochmal mit scriptbasierter PW-Eingabe schützt, würde ich es unter normalen Umständen auch nicht machen - aber das könnte man in einer Testumgebungen vllt. noch hinnehmen. Aber im Internet oder auch nur annährend produktiv ist das schon fahrlässig.

Hast du vielleicht eine andere oder bessere Lösung?

Ja. Wenn du solche Aktionen machen willst, dann log dich via ssh ein und nehm ne Shell bzw. dann dort dein script dafür.

Du solltest solche Systemveränderungen nicht via Web vornehmen - m. E. auch nicht mit sudo.

ciao,

victorinox

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

also das mit der Shell und dem Skript, wäre mir eigentlich auch lieber, aber das geht aus verschidenen gründen leider nicht.

Was ich mir überlegt, habe ist, vielleicht die Dienste über die Prozessliste abzufragen, dass dürfte der wwwrun denke ich und da müsste ich nichts freigeben.

Nur wie kann ich das für jedes System machen und das vorallem Dynamisch?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also was du machen willst müsste auch ohne root rechte gehen. Den Status einen Services kannst du auch mit dem wwwrun abfragen. das einzige was net geht ist das du die Dinger über "rcapache status" abfragst sondern du musst das direkt über "/etc/init.d/apache status" machen da die "rcXXX" links unter /sbin liegen und das net direkt im Pfad des wwwruns liegt.

Sprich nur zum abfragen brauchst du garnix zu machen außer deine aufrufe ein wenig zu modifizieren:

$service=~s/S[0-9]*/rc/;
wird sowas wie
$service=~s/S[0-9]*/\/etc\/init.d\//;

vielleicht musst du den . noch escapen (bin net so der perl Experte *G*)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...