Ich weiß jetzt nicht ob das auf diesen Fall zutrifft, aber man macht
solche Dinge oft so: Man setzt das SUID(SUID = Set User ID)-Datei-Flag
der Programmdatei des Programms, welches eine privilegierte Aktion (
z.B. eben herunterfahren) ausführen soll. Dies bewirkt, dass das
Programm immer als der Benutzer, dem die Datei gehört (also oft root),
ausgeführt wird, egal wer es startet, sodass das Programm eben den
Computer herunterfahren kann. Wenn man voraussetzt, dass das Programm
keinen Bug oder Sicherheitslücke enthält, ist das auch recht sicher, da
das Programm eben nur diese eine Aktion durchführt, und nicht dazu
gebracht werden kann (können sollte ;), irgendwelche schädlichen
Aktionen durchzuführen. Daher sind solche Programme immer sehr klein und
haben z.B. keine grafische Oberfläche (diese wird dann, falls eine
benötigt wird, "extern" in einem nicht-SUID-Programm gemacht), um
möglichst wenig Fehlerquellen zu haben. Das klassische Beispiel ist
passwd, das Konsolen-Programm um das eigene Passwort zu verändern: Die
Passwörter sind in /etc/passwd (bzw. bei neueren Linuxen in /etc/shadow)
gespeichert. Diese Datei ist nur für root beschreibbar, sodass ein
Benutzer sein Passwort eigentlich nicht ändern kann. Das passwd-Programm
hat aber eben dieses SUID-Flag gesetzt, sodass, wenn ein Benutzer es
aufruft, um sein Passwort zu ändern, das Programm als root gestartet
wird und /etc/passwd beschreiben kann. Das Programm achtet dabei
natürlich darauf, dass der Benutzer nur sein eigenes Passwort ändern
kann, oder eben auch gar nicht ändern kann, falls root es so
konfiguriert hat. Die Programme su, sodu etc. (und ihre grafischen
Pendants gksu etc.) arbeiten übrigens genauso.
Noch mehr Kontrolle über die von Benutzern durchführbaren Aktionen
erreicht man, indem man dafür sorgt, dass die Programmdatei des
SUID-Programms einer bestimmten Benutzergruppe gehört, und nur Benutzer
dieser Gruppe können dieses Programm ausführen (so kann sudo z.B. nur
von Benutzern, die in der wheel-Gruppe sind, ausgeführt werden -
wimre.).