GNU/Linux >> Linux Esercitazione >  >> Linux

Regola Polkit per i file di unità modello Systemd?

Sto cercando di capire come scrivere una regola polkit per un file modello systemd. La regola viene attivata quando utilizzo il servizio effettivo di cui verrà creata un'istanza ([email protected] ) ma non quando tralascio la stringa dell'identificatore dell'istanza ([email protected] ).

Ecco la regola di lavoro completa:

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

La mia impressione è che potrei usare javascript regex per glob semplicemente la stringa tra "@" e ".service", ma non riesco proprio a capirlo.

Il mio provider VPN ha molti server possibili, ognuno con la propria configurazione (a cui fa riferimento il file dell'unità modello [email protected]), quindi mi piacerebbe davvero non dover scrivere una regola polkit per ogni istanza del modello.
Grazie mille!

Aggiornamento:

L'ho risolto secondo la mia impressione sopra, usando regex per testare il file modello. Forse non è sicuro?

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

Risposta accettata:


Linux
  1. Come gestire le unità systemd all'avvio

  2. Come scrivere uno script di avvio per Systemd?

  3. Scrivere file di servizio Systemd di base?

  4. Ubuntu:creazione di file unitari in Ubuntu 16.04?

  5. Pseudo file per dati temporanei?

Crea file modello in GNOME

Comando ls in Linux per elencare i file

Cookie:un generatore di file basato su modelli per i progetti

SystemD - A cosa serve SystemD?

File unità Systemd - WantedBy e After

Distribuzione di una cartella di file modello utilizzando ansible