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

Polkit-Regel für Systemd-Template-Unit-Dateien?

Ich versuche herauszufinden, wie man eine Polkit-Regel für eine systemd-Vorlagendatei schreibt. Die Regel wird ausgelöst, wenn ich den eigentlichen Dienst verwende, der instanziiert wird ([email protected] ), aber nicht, wenn ich die Zeichenfolge der Instanzkennung weglasse ([email protected] ).

Hier ist die vollständige Arbeitsregel:

polkit.addRule(function(action, subject) {
  if ( action.id == "org.freedesktop.systemd1.manage-units") {
    if (action.lookup("unit") == "[email protected]" && subject.isInGroup("wheel")) {
      var verb = action.lookup("verb");
      if (verb == "start" || verb == "stop" || verb == "restart") {
        return polkit.Result.YES;
      }
    }
  }
  polkit.log("action=" + action);
  polkit.log("subject=" + subject);
});

Meine Vermutung ist, dass ich Javascript-Regex verwenden könnte, um die Zeichenfolge einfach zwischen „@“ und „.service“ zu globbeln, aber ich kann es nicht ganz herausfinden.

Mein VPN-Anbieter hat viele mögliche Server, jeder mit seiner eigenen Konfiguration (auf die in der [E-Mail-geschützten] Vorlageneinheitendatei verwiesen wird), daher möchte ich wirklich nicht für jede Instanz der Vorlage eine Polkit-Regel schreiben müssen.
Vielen Dank!

Aktualisierung:

Ich habe dies gemäß meiner obigen Vermutung gelöst, indem ich Regex zum Testen der Vorlagendatei verwendet habe. Das ist vielleicht unsicher?

polkit.addRule(function(action, subject) {
  if ( action.id == "org.freedesktop.systemd1.manage-units") {
      var instance = /[email protected][a-z]+.service/.test(action.lookup("unit"));
    if ( instance === true && subject.isInGroup("wheel")) {
      var verb = action.lookup("verb");
      if (verb == "start" || verb == "stop" || verb == "restart") {
        return polkit.Result.YES;
      }
    }
  }
  polkit.log("action=" + action);
  polkit.log("subject=" + subject);
});

Akzeptierte Antwort:


Linux
  1. So verwalten Sie systemd-Einheiten beim Start

  2. Skript zum Überwachen des Ordners auf neue Dateien?

  3. Shell-Skript zum Verschieben der ältesten Dateien?

  4. Ubuntu – Erstellen von Unit-Dateien in Ubuntu 16.04?

  5. Pseudodateien für temporäre Daten?

Vorlagendateien in GNOME erstellen

ls-Befehl in Linux zum Auflisten von Dateien

Legen Sie die Systemd Unit-Datei ab?

Wie ändere ich den Benutzer für eine Reihe von Systemd-Dienstdateien?

SystemD - Wofür wird SystemD verwendet?

Bereitstellen eines Ordners mit Vorlagendateien mit Ansible