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.
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
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
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:
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.
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.
systemd
und einer aktivenlogind
Sitzung einen Neustart durchführen oder das System ohne erhöhte Berechtigungen ausschalten, vorausgesetzt, kein anderer Benutzer ist noch angemeldet ...systemd
wird. Meinst du also, dass andere Distros wie Arch ohne erweiterte Berechtigungen neu starten können?Antworten:
Ich habe es
/etc/sudoers
so geändert , dass jeder Benutzer in der Admin-Gruppe die folgenden Befehle ausführen kann, ohne nach einem Passwort gefragt zu werden.Sie müssen nur die folgenden Zeilen hinzufügen
/etc/sudoers
und füge dich der Admin-Gruppe hinzu.
Wenn Sie möchten, dass nur ein Benutzer dies tun kann, entfernen Sie einfach den
%admin
und ersetzen Sie ihn durchusername
diesenWeitere Informationen finden Sie
/etc/sudoers
unterman sudoers
oder in der Online-Manpagequelle
Sie können auch eine neue Datei unter dem gewünschten
/etc/sudoers.d
Namen erstellen (ich habe sie benannt'shutdown'
) und die folgenden Zeilen einfügen:Ä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 Dateisudoers.d
besteht darin, dass diese Datei System-Upgrades überlebtquelle
/etc/sudoers
eine entsprechende#include
Anweisung zum Lesen von Dateien vorhanden ist/etc/sudoers.d/
.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.Festlegen von Berechtigungen:
ls -l
outpus sollte so aussehen:Anschließend können Sie einfach Folgendes eingeben:
quelle
Einfachste Lösung:
Dann können Sie einen der folgenden Befehle verwenden:
Laut man shutdown gibt es -a Option für Nicht-Root-Nutzung:
Es funktioniert unter Debian Linux. Und es gibt eine Begrenzung für 32 Benutzernamen in
/etc/shutdown.allow
.quelle