Ausschalten oder Neustart als normaler Benutzer

15

Um den Befehl auszuführen poweroffoder rebootmuss man Superuser sein. Kann ich dies trotzdem als normaler Benutzer ausführen? Ich möchte einfach nicht bei sudojedem Neustart oder Ausschalten mein Passwort eingeben.

Stormvirux
quelle
2
Die Antwort hängt davon ab, welches Init-System Ihre Distribution verwendet ... Beispielsweise können Sie mit systemdund einer aktiven logindSitzung einen Neustart durchführen oder das System ohne erhöhte Berechtigungen ausschalten, vorausgesetzt, kein anderer Benutzer ist noch angemeldet ...
jasonwryan
@jasonwryan Ich verwende derzeit Ubuntu, das standardmäßig nicht verwendet systemdwird. Meinst du also, dass andere Distros wie Arch ohne erweiterte Berechtigungen neu starten können?
Stormvirux
Ja, gemäß den Bedingungen in meinem ersten Kommentar.
Jasonwryan

Antworten:

20

Ich habe es /etc/sudoersso geändert , dass jeder Benutzer in der Admin-Gruppe die folgenden Befehle ausführen kann, ohne nach einem Passwort gefragt zu werden.

sudo halt
sudo reboot
sudo poweroff

Sie müssen nur die folgenden Zeilen hinzufügen /etc/sudoers

## Admin user group is allowed to execute halt and reboot 
%admin ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

und füge dich der Admin-Gruppe hinzu.

Wenn Sie möchten, dass nur ein Benutzer dies tun kann, entfernen Sie einfach den %adminund ersetzen Sie ihn durch usernamediesen

## user is allowed to execute halt and reboot 
stormvirux ALL=NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

Weitere Informationen finden Sie /etc/sudoersunter man sudoersoder in der Online-Manpage

Raphael Ahrens
quelle
3

Sie können auch eine neue Datei unter dem gewünschten /etc/sudoers.dNamen erstellen (ich habe sie benannt 'shutdown') und die folgenden Zeilen einfügen:

# Allows me to shutdown the system without a password

yourUserName ALL = NOPASSWD: /sbin/halt, /sbin/reboot, /sbin/poweroff

Ändern Sie einfach "yourUserName" für IHREN Benutzernamen und fügen Sie zu verwendende Befehle hinzu oder entfernen Sie sie shutdown. Ich persönlich verwende sie nur für . Einer der Hauptunterschiede beim Erstellen einer bestimmten Datei sudoers.dbesteht darin, dass diese Datei System-Upgrades überlebt

Racu
quelle
1
Wenn Sie sich für diesen Ansatz entscheiden, stellen Sie sicher, dass /etc/sudoerseine entsprechende #includeAnweisung zum Lesen von Dateien vorhanden ist /etc/sudoers.d/.
patricktokeeffe
2

Sie können dies auch durch einen Trick mit setuid erreichen. Ich weiß nicht, ob es auf allen Systemen funktionieren wird, da sie manchmal das setuid / setgid-Bit ignorieren.

Sie können eine Gruppe von Benutzern angeben, die den Systemstatus in meinem Fall ändern können adm. Fügen Sie dieser Gruppe dann die entsprechenden Benutzer hinzu.

gpasswd -a $USER adm

Festlegen von Berechtigungen:

chmod 4550 /usr/bin/reboot

ls -l outpus sollte so aussehen:

-r-sr-x--- 1 root adm 18928 Mar 13  2015 /usr/bin/reboot

Anschließend können Sie einfach Folgendes eingeben:

reboot
Hurufu
quelle
1

Einfachste Lösung:

sudo echo $USER >> /etc/shutdown.allow

Dann können Sie einen der folgenden Befehle verwenden:

shutdown -ah now   // halt
shutdown -ar now   // reboot

Laut man shutdown gibt es -a Option für Nicht-Root-Nutzung:

Wenn shutdownmit dem Argument -a aufgerufen wird (fügen Sie dies zum Aufruf von shutdown in / etc / inittab hinzu ), wird geprüft, ob die Datei /etc/shutdown.allow vorhanden ist. Anschließend werden die Anmeldenamen in dieser Datei mit der Liste der Personen verglichen, die an einer virtuellen Konsole angemeldet sind.

Es funktioniert unter Debian Linux. Und es gibt eine Begrenzung für 32 Benutzernamen in /etc/shutdown.allow.

Alexander Yancharuk
quelle
4
Keine solche Option auf Fedora, CentOS oder RHEL.
fpmurphy
1
Dies funktioniert auch nicht für Ubuntu, zumindest bekomme ich das aus den Dokumenten. Es wäre hilfreich zu sehen, ob dies nur eine Debian-Funktion ist.
Raphael Ahrens