Aus irgendeinem Grund haben wir nicht mehr benötigen root (oder mit sein sudo
) zu laufen /sbin/shutdown
, /sbin/reboot
usw.
Dies scheint darauf zurückzuführen zu sein, dass diese ausführbaren Dateien nun Symlinks sind, mit /bin/systemctl
denen alles als normaler Benutzer behandelt wird.
Was aber, wenn ich will shutdown
und reboot
wieder root Authentifizierung erforderlich ist ? Wie kann ich das erreichen?
pkaction | grep login1
für andere Regeln von Interesse)sudo visudo
und prüfen, ob eine Zeile mit dem Pfad zu diesen ausführbaren Dateien vorhanden ist.Antworten:
Systemd umgehen kann in der Tat das
shutdown
,reboot
und andere Befehle, und die Standardzugewiesenen Berechtigungen sind permissive. Um dies zu ändern, müssen Sie eine Polkit-Regel erstellen. Erstellen Sie eine.pkla
Datei in/etc/polkit-1/localauthority/50-local.d
(zum Beispielconfirm-shutdown.pkla
), die Folgendes enthält:Die verschiedenen Herunterfahren, Neustarten etc. Befehle sind, in polkit Bedingungen, Aktionen in
org.freedesktop.login1
, zum Beispielorg.freedesktop.login1.power-off
,org.freedesktop.login1.reboot
usw. Das spezifische Problem hier ist die Standardkonfiguration, die in ist/usr/share/polkit-1/actions/org.freedesktop.login1.policy
:Beachten Sie, dass der aktive Benutzer ausgeschaltet, neu gestartet usw. werden kann.
quelle
Sie können den
chmod
Befehl verwenden.Wenn Sie nur root Zugriff gewähren möchten, können Sie schreiben:
Wenn Sie der Root- und der Sudo-Gruppe Berechtigungen erteilen möchten, können Sie Folgendes schreiben:
Wenn Sie die Gruppe der Datei von sudo in eine andere ändern möchten (z. B. Benutzer oder Administratoren), müssen Sie Folgendes eingeben:
Wenn Sie zurückkehren möchten, führen Sie Folgendes aus:
Hinweis : Möglicherweise müssen Sie
sudo
diesen Befehl verwenden oder sich im Root-Konto angemeldet habenquelle
/bin/systemctl
). Wenn Sie also chmod / sbin / shutdown ausführen, wirken sich dies auf alle Links aus, auf/bin/systemctl
die verwiesenbin/systemctl
wird , da die Berechtigungen geändert werden, wie durch den Befehl $ll /bin/systemct
l bestätigt -rwx ------ 1 root root 659848 18. Januar 16.04 / bin / systemctl *-rwxr-xr-x 1 root root 659848 Jan 18 16:04 /bin/systemctl
Wenn Sie die Berechtigungen eines Symlinks auf einem Linux-System ändern, ändern Sie nicht die Berechtigungen des Links, sondern die Datei, auf die er verweist (zumindest in Ubuntu). Ich würde denken, dass der sicherste Weg, dies zu erreichen, darin besteht, den Link zu entfernen und ihn mit der erforderlichen Umask neu zu erstellen , um das gewünschte Ergebnis zu erzielen .
Eine weitere verwandte Post gefunden werden kann hier
quelle
Sie können ein Skript erstellen, das prüft, ob der Benutzer es mit Root-Berechtigungen ausführt oder nicht.
Dann wird der Befehl systemctl ausgeführt oder ein Fehler zurückgegeben.
Quelle
quelle
Versuchen Sie, die Berechtigungen im Terminal zu ändern. Sie können es nur für eine bestimmte Gruppe ausführbar machen, z. B. wheel oder admin. Leider (oder vielleicht zum Glück) kann eine Datei nur einen Gruppeneigentümer haben, so dass ein Chown für sich allein einfach nicht funktioniert. Versuchen Sie "sudo chown root: wheel / sbin / shutdown" und dann "sudo chmod g + x / sbin / shutdown". Dadurch kann die Datei nur von root und Admins (shudders) ausgeführt werden, und sudoers müssen ihre Passwörter eingeben.
quelle