Table des matières

Les règles sous polkit

polkit permet d'exécuter des applications avec certains droits. Il peut être envisagé comme une alternative à sudo.

Dans cette page nous allons voir deux règles pour éteindre et redémarrer sa machine sous OpenBSD (lorsque l'on est sous une session graphique).

Par exemple xfce4-session est capable d'utiliser cette fonctionnalité.

Il faut que DBus soit lancer au démarrage.

Chercher les actions prédéfinies

La commande pkaction va lister toutes les « actions » disponibles. Celles qui nous intéresse sont :

Il nous faut maintenant définir les règles. Ces règles 1) sont recherchées tout d'abord dans les dossiers /etc/polkit-1/rules.d/ et /usr/local/share/polkit-1/rules.d/, puis elles sont classées par ordre alphabétique, en se basant sur le nom des fichiers.

polkitd reads .rules files from the /etc/polkit-1/rules.d and /usr/share/polkit-1/rules.d directories by sorting the files in lexical order based on the basename on each file (if there's a tie, files in /etc are processed before files in /usr). For example, for the following four files, the order is

* /etc/polkit-1/rules.d/10-auth.rules
* /usr/share/polkit-1/rules.d/10-auth.rules
* /etc/polkit-1/rules.d/15-auth.rules
* /usr/share/polkit-1/rules.d/20-auth.rules

Règle pour redémarrer l'ordinateur

Voici donc le fichier 05-restart.rules.

05-restart.rules
polkit.addRule (function (action, subject) {
  if (action.id == "org.freedesktop.consolekit.system.restart" ||
      action.id == "org.freedesktop.consolekit.system.restart-multiple-users"
      && subject.isInGroup ("users")) {
    return polkit.Result.YES;
  }
});

On autorise tous les utilisateurs appartenant au groupe users à pouvoir redémarrer l'ordinateur.

Règle pour arrêter l'ordinateur

Voici donc le fichier 05-stop.rules.

05-stop.rules
polkit.addRule (function (action, subject) {
  if (action.id == "org.freedesktop.consolekit.system.stop" ||
      action.id == "org.freedesktop.consolekit.system.stop-multiple-users"
      && subject.isInGroup ("users")) {
    return polkit.Result.YES;
  }
});

On autorise tous les utilisateurs appartenant au groupe users à pouvoir arrêter l'ordinateur.

1)
Ce sont de simples fichiers textes.