GNU/Linux >> Znalost Linux >  >> Linux

Pravidlo Polkit pro soubory jednotek šablony Systemd?

Snažím se přijít na to, jak napsat pravidlo polkit pro soubor šablony systemd. Pravidlo se spustí, když použiji skutečnou službu, která bude vytvořena ([email protected] ), ale ne, když vynechám řetězec identifikátoru instance ([email protected] ).

Zde je úplné pracovní pravidlo:

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);
});

Domnívám se, že bych mohl použít regex javascriptu pouze k seskupení řetězce mezi „@“ a „.service“, ale nemohu na to tak úplně přijít.

Můj poskytovatel vpn má mnoho možných serverů, z nichž každý má svou vlastní konfiguraci (na kterou odkazuje soubor šablony [email protected]), takže bych opravdu rád nemusel psát pravidlo polkit pro každou instanci šablony.
Díky moc!

Aktualizace:

Vyřešil jsem to podle mého tušení výše, pomocí regexu k testování souboru šablony. Je to možná nebezpečné?

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);
});

Přijatá odpověď:


Linux
  1. Skript pro sledování nových souborů ve složce?

  2. Psaní základních souborů Systemd Service?

  3. Nastavit Umask pro souborový systém připojený k Sshfs?

  1. Systemd:Nelze zakázat vygenerovaný soubor jednotky?

  2. Vložit soubor Systemd Unit?

  3. Jak změnit uživatele pro spoustu souborů služby Systemd?

  1. Jak spravovat systémové jednotky při spuštění

  2. Jak napsat spouštěcí skript pro Systemd?

  3. Cookie – Generátor souborů pro projekty založený na šablonách