GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist der richtige Weg, um zu verhindern, dass Benutzer ohne Rootberechtigung heruntergefahren oder neu gestartet werden?

  • pklocalauthority ist veraltet
  • Du brauchst systemd mit logind und polkit.

Verfügbare Aktionen

pkaction
# or /usr/share/polkit-1/actions/

Sie sollten sich /usr/share/polkit-1/actions/org.freedesktop.login1.policy ansehen

Regel hinzufügen

Beginnen Sie zuerst mit der Überwachung von Systemmeldungen, damit wir sehen können, ob unsere neue Regel funktioniert:

journalctl -f

Erstellen Sie dann die Datei /etc/polkit-1/rules.d/60-noreboot_norestart.rules (in Javascript).

In dieser Datei fügen wir Logik hinzu, um nach Aktionen zu suchen und users zuzulassen in power Gruppe oder erfordern su Berechtigung:

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.login1.reboot" ||
        action.id == "org.freedesktop.login1.reboot-multiple-sessions" ||
        action.id == "org.freedesktop.login1.power-off" ||
        action.id == "org.freedesktop.login1.power-off-multiple-sessions") {
        if (subject.isInGroup("power")) {
            return polkit.Result.YES;
        } else {
            return polkit.Result.AUTH_ADMIN;
        }
    }
});

Regel sollte geladen werden und es sollte funktionieren. Referenzen unten.

  1. https://lists.fedoraproject.org/pipermail/users/2013-September/440457.html
  2. https://wiki.archlinux.org/index.php/Polkit#Authorization_rules
  3. http://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html
  4. https://bbs.archlinux.org/viewtopic.php?pid=1335204#p1335204

Beachten Sie zunächst, dass die Shutdown-Funktion von ConsoleKit „einzelner Benutzer“ und „mehrere Benutzer“ als zwei unterschiedliche Situationen betrachtet – das Herunterfahren des Systems erfordert immer eine Administratorauthentifizierung, wenn andere Benutzer angemeldet sind.

Alle diese Aktionen werden von PolicyKit verwaltet. Wenn Sie die Richtlinien anpassen möchten, können Sie dies wie in polkit(8) – /etc/polkit-1/rules.d/20-disallow-shutdown.rules beschrieben tun :

polkit.addRule(function(action, subject) {
    if ((action.id == "org.freedesktop.consolekit.system.stop" ||
         action.id == "org.freedesktop.consolekit.system.restart") &&
        subject.isInGroup("users")) {
            return subject.active ? polkit.Result.AUTH_ADMIN : polkit.Result.NO;
    }
});

PolicyKit 0.105 und frühere Versionen dokumentieren dies in pklocalauthority(8) – /etc/polkit-1/localauthority/50-local.d/20-disallow-shutdown.pkla :

[Disallow shutdown]
Identity=unix-group:users
Action=org.freedesktop.consolekit.system.stop;org.freedesktop.consolekit.system.restart
ResultAny=no
ResultInactive=no
ResultActive=auth_admin

Die Action s werden in der ConsoleKit-Richtliniendatei oder durch Ausführen von pkaction aufgelistet .


Linux
  1. Wie kann man verhindern, dass Benutzer auf das Root-Verzeichnis zugreifen?

  2. Was ist der einfachste Weg zu SSH mit Python?

  3. Wie verwendet man inotify richtig?

  4. Was ist der schnellste Weg, um Text über die Befehlszeile zu einer Datei hinzuzufügen?

  5. Was ist der richtige Weg, um eine Reihe von Ports in iptables zu öffnen

Was ist der richtige Weg, um jdk unter Linux zu installieren?

Was ist der einfachste Weg, um Speicherplatz auf einer Festplatte freizugeben?

Was ist der schnellste Weg, um unter Linux eine Million Bilder von einem Verzeichnis in ein anderes zu verschieben?

Was ist der einfachste Weg, Daten von stdout als Diagramm zu visualisieren?

Was ist der schnellste Weg, um ein Skript auszuführen?

Was ist die korrekte find -exec-Syntax