GNU/Linux >> Tutoriales Linux >  >> Linux

¿Regla de Polkit para archivos de unidades de plantillas de Systemd?

Estoy tratando de descubrir cómo escribir una regla polkit para un archivo de plantilla systemd. La regla se activa cuando uso el servicio real que se instanciará ([email protected] ) pero no cuando omito la cadena del identificador de instancia ([email protected] ).

Aquí está la regla de trabajo 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);
});

Mi corazonada es que podría usar javascript regex para agregar la cadena entre "@" y ".service", pero no puedo resolverlo.

Mi proveedor de vpn tiene muchos servidores posibles, cada uno con su propia configuración (referenciada por el archivo de unidad de plantilla [email protected]), por lo que realmente me gustaría no tener que escribir una regla polkit para cada instancia de la plantilla.
¡Muchas gracias!

Actualización:

Resolví esto de acuerdo con mi corazonada anterior, usando expresiones regulares para probar el archivo de plantilla. ¿Quizás esto no es seguro?

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

Respuesta aceptada:


Linux
  1. Cómo administrar unidades systemd al inicio

  2. ¿Script para monitorear la carpeta en busca de nuevos archivos?

  3. ¿Cómo escribir un script de inicio para Systemd?

  4. ¿Script de Shell para mover archivos más antiguos?

  5. Ubuntu – ¿Crear archivos de unidad en Ubuntu 16.04?

Crear archivos de plantilla en GNOME

Comando ls en Linux para listar archivos

¿Establecer Umask para el sistema de archivos montado en Sshfs?

¿Poner el archivo de la unidad Systemd?

Cookie:un generador de archivos basado en plantillas para proyectos

SystemD - ¿Para qué se utiliza SystemD?