sombrero2007 Geschrieben 2. Mai 2007 Geschrieben 2. Mai 2007 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>"; Zitieren
bigvic Geschrieben 2. Mai 2007 Geschrieben 2. Mai 2007 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. Zitieren
sombrero2007 Geschrieben 2. Mai 2007 Autor Geschrieben 2. Mai 2007 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. Zitieren
lordy Geschrieben 2. Mai 2007 Geschrieben 2. Mai 2007 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 Wenn du unbedingt eine bestimmte Aktion als root ausführen willst solltest du sudo verwenden. Zitieren
bigvic Geschrieben 2. Mai 2007 Geschrieben 2. Mai 2007 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 Zitieren
sombrero2007 Geschrieben 2. Mai 2007 Autor Geschrieben 2. Mai 2007 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? Zitieren
b41nd34d Geschrieben 9. Mai 2007 Geschrieben 9. Mai 2007 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*) Zitieren
Empfohlene Beiträge
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.