Shutdown per Perl Script?

Hallo,
wir haben in der WG einen Linuxrouter aus einem alten Rechner gebastelt. Da das Ding nicht den ganzen Tag laufen soll und auf einem Schrank steht müssen wir immer per telnet/ssh drauf und uns als root anmelden und es runterfahren. Weiss jemand eine Möglichkeit wie ich den shutdown Befehl per Perlskript auf rufen kann? Ein Apache läuft auf dem Rechner aber der User www-data hat sinnvollerweise nicht das Recht root-Kommandos auszuführen. Ein Scheunentor will nach Möglichkeit auch nicht öffnen. Bin da ratlos.
Gruss Claudi

Hallo Claudi,

vielleicht ist der „Linux-Befehl“ su oder das Programm-Paket
sudo was fuer Dich.

Hast Du schon mal im CPAN nach einem passdenden Modul gesucht ?

Eine Sicherheitsluecke schaffst Du damit aber auf jeden Fall. Du musst halt den Nutzen gegen die moeglichen Gefahren abwaegen…

Gruss
Arne

Hi!

Mir fallen da einige Methoden ein, aber die ?einfachste? waere wohl ein perl-script als root zu screiben und es mit dem Befehl ‚perlcc‘ in eine ausfuehrbare Datei zu verwandeln. Der verpasst man ein SUID-bit und hat eine relativ sichere Methode, die Maschine herunterzufahren. Wenn man dem Skript dann noch die Gruppe von www-data zuweist und die ausfuehrung nur root und der Gruppe erlaubt, so ist man fast ganz sicher.

Ich weiss nicht, ob ich deine Frage auch beinhaltet /wie/ das Script aussieht, aber hier ist es:

#!/usr/bin/perl

exec (/sbin/shutdown -h now);

Alternativ koennte man auch gleich ein C-Programm schreiben, das nur aus einem aufruf der ‚execve‘-Funktion besteht, die dann den Shutdown-Befehl aufruft! :smile: Die Methode ist im Gegensatz zu der Perl-Methode auch nicht experimentell…

Auf jeden Fall sollte das Script /nur/ von root und einer sehr kleinen Gruppe von Usern auszufuehren sein, ansonsten waere sudo tatsaechlich eine Alternative.

Nur ein kleiner Kommentar aus dem Bauch,
hoffe es hilft…

Mfg,

MG

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

*keuch* ich kann zwar etwas Perl aber mehr als den Webserver kann ich net bedienen. Was is denn ein SUID-bit? Und wie sage ich dem Skript dass es nur von root und www-data ausgeführt werden darf? Danke für Eure Hilfe
Gruss Claudi