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 einen 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 es ausführe sudo shutdown -h now
. Außerdem wird eine Fehlermeldung angezeigt, dass Root-Berechtigungen erforderlich sind, wenn ich das Herunterfahren ohne sudo ausfü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 erteilen, den Befehl zum Herunterfahren auszuführen, ohne das Kennwort manuell eingeben zu müssen?
Vielen Dank.
sudoers
bitte Ihre echte und ganze Datei posten ?Antworten:
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):
ConsoleKit (neuere Ubuntu-Versionen, getestet unter Ubuntu 11.04):
quelle
Ich habe es wie in dieser Antwort gemacht, funktioniert einwandfrei für mich. Vielleicht fehlt Ihrem Ansatz der
visudo
Teil?Öffnen Sie eine Befehlszeile und geben Sie Folgendes ein:
Fügen Sie in der sich öffnenden Datei am Ende die folgende Zeile hinzu:
Beenden Sie dann den Editor und sichern Sie ihn (STRG + x).
Jetzt können Sie Ihren Computer über die Befehlszeile herunterfahren, z. B. nachdem Sie etwas heruntergeladen haben:
quelle
Vor einiger Zeit habe ich dies getan, indem ich die suid (Set User ID) eingestellt habe. Dadurch wird das Programm als Eigentümer der Datei ausgeführt, nicht als Benutzer, der sie ausführt. Da das Herunterfahren im Besitz von root ist, sollten Sie das Herunterfahren ohne sudo durchführen können.
Es gibt jedoch Auswirkungen auf die Sicherheit, da jeder das Herunterfahren ausführen kann. http://en.wikipedia.org/wiki/Setuid
quelle
/etc
.sudo
ist meiner Meinung nach der richtige Weg, aber leider gibt der Benutzer nicht die Möglichkeit, seinesudoers
Datei zu sehen , und was daran falsch ist.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, führen Sie das Skript einfach mit sudo aus. Das fragt Sie nach Ihrem Passwort, wenn Sie das Skript ausführen, aber dann kann das Skript selbst das System ohne weitere Eingriffe herunterfahren.
quelle