Korseby Online - Shutdown

Shutdown privilegierten Benutzern ermöglichen

Normalerweise darf nur root den Rechner neu starten oder herunter fahren. Das ist auf einem Multi-User Betriebssystem auch erwünschenswert, denn hier besitzt nur der Administrator die ultimative Kontrolle. Manchmal ist es aber notwendig, oder auf einem Desktop-System angenehm, den Rechner auch als normaler Benutzer auszuschalten, ohne vorher das root-Passwort eingeben zu müssen. Dieser Kurztipp erklärt 4 Varianten, wie man als Benutzer dies erreichen kann.

1. Variante: SUID-Bit setzen

Unelegant ist es, wenn man bei /sbin/shutdown das SUID-Bit setzt:

chmod +s /sbin/shutdown

Hierbei kann aber jeder Benutzer den Rechner herunter fahren. Das ist jedoch unsicher und auch nicht erwünscht.

2. Variante: /etc/shutdown.allow

Shutdown besitzt ACLs (Access Control Lists), hiermit kann man max. 32 Benutzer privilegieren, den Rechner zu booten. Dazu editiert man die Datei /etc/shutdown.allow und fügt die berechtigten Nutzer dort ein (jeweils der Loginname pro Zeile).

Nun kann jeder angemeldete Nutzer, der dort eingetragen ist, den Rechner bspw. mit

/sbin/shutdown -a -r now

neu booten. Der Parameter -a dient als Referenz auf /etc/shutdown.allow.

Wenn man auch die Tastenkombination <STRG>-<ALT>-<ENTF> aktivieren will, dann fügt man die Zeile

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

zur /etc/inittab hinzu. Normalerweise besitzt aber jede moderne Linux-Distribution bereits einen solchen Eintrag.

3. Variante: sudo

Mittels sudo (super user do) kann man für jeden Nutzer Befehle einrichten, die dieser als root ausführen darf. Hierzu editiert man /etc/sudoers (ist normalerweise schreibgeschützt) und fügt 2 Einträge hinzu:

# Cmnd alias specification
Cmnd_Alias SYSTEM = /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/poweroff

# User privilege specification
gdm ALL=(root) NOPASSWD: SYSTEM

Der Benutzer gdm darf in diesem Beispiel nun 4 Befehle mit root-Rechten ausführen. Einfach sudo vor dem Befehl setzen.

4. Variante: Login Manager

Oft ist es auch erwünschenswert, wenn jeder Nutzer auf einem Desktop-System direkt über den Login-Manager den Rechner herunter fahren kann. Wenn man gdm benutzt (den Gnome Display Manager), editiert man die Datei /etc/gdm/gdm.conf und ändert die folgenden Einträge ab:

RebootCommand=/usr/bin/sudo /sbin/shutdown -r now \"Rebooted from gdm menu.\"
HaltCommand=/usr/bin/sudo /sbin/shutdown -h now \"Halted from gdm menu.\"
SecureSystemMenu=false

Da unter 3. der Benutzer gdm berechtigt wurde, /sbin/shutdown mit root-Rechten auszuführen, darf nun jeder Nutzer den Rechner booten.

Referenzen

- man shutdown
- man inittab
- man sudo
- man sudoers