it-swarm.com.de

Wie kann ich einem Benutzer die Berechtigung zum Herunterfahren geben?

Ich benutze Ubuntu 11.04. Ich möchte ein Skript ausführen, das nach einem laufenden Prozess sucht und das System herunterfährt, wenn dieser Prozess endet. Zu diesem Zweck benötigt der Benutzer den Zugriff zum Herunterfahren, damit das Skript ausgeführt werden kann, ohne dass ein Kennwort erforderlich ist.

Ich habe auf diese Seite verwiesen und den Text in meine sudoers-Datei eingefügt. Es fragt mich jedoch immer noch nach dem Passwort, wenn ich Sudo shutdown -h now ausführe. Außerdem erhalte ich die Fehlermeldung, dass Root-Rechte erforderlich sind, wenn ich das Herunterfahren ohne Sudo durchführe.

Meine sudoers-Datei sieht ungefähr so ​​aus.

# Cmnd alias specification
Cmnd_Alias      SHUTDOWN = /sbin/shutdown

# User privilege specification
root    ALL=(ALL:ALL) ALL
myusername    ALL = NOPASSWD: SHUTDOWN

Wie kann ich einem Benutzer die Berechtigung geben, den Befehl zum Herunterfahren auszuführen, ohne das Kennwort manuell eingeben zu müssen?

Vielen Dank.

9
Amey Jah

Sie können mit HAL oder ConsoleKit herunterfahren oder neu starten, ohne dass Sie einen Benutzernamen/ein Passwort eingeben müssen:

HAL (ältere Ubuntu-Versionen):

dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown

ConsoleKit (neuere Ubuntu-Versionen, getestet unter Ubuntu 11.04):

dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
6
Alin Andrei

Ich tat es wie in diese Antwort, funktioniert bei mir einwandfrei. Vielleicht verfehlt Ihr Ansatz den Teil visudo?

Öffnen Sie eine Befehlszeile und geben Sie Folgendes ein:

Sudo visudo 

Fügen Sie in der sich öffnenden Datei die folgende Zeile am Ende hinzu:

yourusername ALL=NOPASSWD: /sbin/halt

Beenden Sie dann den Editor und speichern Sie ihn (STRG + x).

Jetzt können Sie Ihren Computer über die Befehlszeile herunterfahren, z. Nachdem Sie etwas heruntergeladen haben:

wget UrlOfTheFileYouWantToDownload ; Sudo halt
7
Christoph

Vor einiger Zeit habe ich dies durch Setzen der suid (Set User ID) getan. Dadurch wird das Programm als Eigentümer der Datei ausgeführt, nicht als Benutzer, der die Datei ausführt. Da das Herunterfahren im Besitz von root ist, sollten Sie es ohne Sudo beenden können.

chmod u+s /sbin/shutdown

Es gibt jedoch Sicherheitsrisiken, da jeder das Herunterfahren ausführen kann. http://en.wikipedia.org/wiki/Setuid

1
turbo

Es hört sich so an, als ob Sie das Skript selbst als root ausführen möchten. Wenn Sie ein Skript ausführen möchten, das darauf wartet, dass etwas beendet wird, und dann Ihren Computer herunterfährt, müssen Sie das Skript nur mit Sudo ausführen. Bei der Ausführung des Skripts werden Sie nach Ihrem Kennwort gefragt. Das Skript selbst kann das System jedoch ohne weitere Eingriffe herunterfahren.

0