GNU/Linux >> Tutoriels Linux >  >> Linux

Règle Polkit pour les fichiers d'unité de modèle Systemd ?

J'essaie de comprendre comment écrire une règle polkit pour un fichier de modèle systemd. La règle est déclenchée lorsque j'utilise le service réel qui sera instancié ([email protected] ) mais pas lorsque j'omets la chaîne d'identifiant d'instance ([email protected] ).

Voici la règle de fonctionnement complète :

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

Mon intuition est que je pourrais utiliser javascript regex pour simplement glob la chaîne entre "@" et ".service" mais je n'arrive pas à comprendre.

Mon fournisseur VPN a de nombreux serveurs possibles, chacun avec sa propre configuration (référencée par le fichier d'unité de modèle [protégé par e-mail]), donc j'aimerais vraiment ne pas avoir à écrire une règle polkit pour chaque instance du modèle.
Merci beaucoup !

Mise à jour :

J'ai résolu cela selon mon intuition ci-dessus, en utilisant regex pour tester le fichier de modèle. C'est peut-être dangereux ?

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

Réponse acceptée :


Linux
  1. Script pour surveiller le dossier pour les nouveaux fichiers ?

  2. Comment écrire un script de démarrage pour Systemd ?

  3. Écrire des fichiers de service Systemd de base ?

  4. Définir Umask pour le système de fichiers monté sur Sshfs ?

  5. Systemd :impossible de désactiver le fichier d'unité généré ?

Créer des fichiers de modèle dans GNOME

Commande ls sous Linux pour lister les fichiers

Pseudo fichiers pour données temporaires ?

Attendre la fin du téléchargement de plusieurs fichiers ?

Comment changer d'utilisateur pour un groupe de fichiers de service Systemd ?

SystemD - A quoi sert SystemD ?