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 :
- org.freedesktop.consolekit.system.restart
- org.freedesktop.consolekit.system.stop
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.