systemd テンプレート単位ファイルの Polkit ルール

systemd テンプレート単位ファイルの Polkit ルール

systemdテンプレートファイルのpolkitルールを作成する方法を理解しようとしています。インスタンス化される実際のサービスを使用すると()ルールがトリガー[email protected]されますが、インスタンス識別子文字列()を省略するとルールはトリガーされません[email protected]

完全な作業ルールは次のとおりです。

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

私の直感では、JavaScript正規表現を使用して「@」と「.service」の間に文字列を入れることができるということですが、よく理解できません。

私のVPNプロバイダには、それぞれ独自の構成を持つ複数のサーバーがあります(提供:[Eメール保護]テンプレート単位のファイル) なので、テンプレートのすべてのインスタンスに対してフォールケットルールを作成したくありません。ありがとうございます!

修正する:

私は上記の予感に基づいて正規表現を使用してテンプレートファイルをテストしてこの問題を解決しました。おそらくこれは安全ではありませんか?

polkit.addRule(function(action, subject) {
  if ( action.id == "org.freedesktop.systemd1.manage-units") {
      var instance = /openvpn-client@[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);
});

ベストアンサー1

おすすめ記事