[RÉSOLU] Déconfiture au registre
Publié : lun. 16 sept. 2019, 02:00
Bon, faisons le bilan après un premier post incendiaire envers les développeurs de dconf - à tort pour une fois...
En mode graphique, on peut modifier la base de registre utilisateur via dconf-editor, sympathique utilitaire graphique, qui permet de modifier des clés/valeurs en un tour de main, tant qu'on reste dans sa session graphique.
En console : on peut utiliser dconf ou gsettings dans un terminal pour lire/écrire les clés/valeurs dans la base de registre. On peut également utiliser systemd pour appeler un script SHELL au démarrage des sessions graphiques, lequel va fixer des réglages communs pour tous les usagers (ce que nous utilisons déjà via notre script maison en réunion informatisée pour info...).
En SSH, si root veut modifier les clés/valeurs pour un utilisateur, il faut faire appel à dbus, sinon ça ne marche pas.
Prenons un simple exemple pour bien illustrer le problème :
Cette commande se termine normalement, et renvoie bien les clés/valeurs de l'usager toto.
Jusque là, tout va bien.
Si maintenant vous voulez changer une clé existante (on ne parle même pas ici d'en créer une nouvelle), vous vous dites qu'il suffit d'un :
Et bien non ! Gsettings va utiliser dconf, qui lui-même appellera dbus-launch, lequel plantera sur des erreurs de type "No protocol specified", puisqu'aucune session graphique n'est ouverte pour l'usager.
On se dit alors que la modification de la base n'est finalement possible qu'en session graphique.
Heureusement, ce n'est pas le cas, et après plusieurs heures passées sur le problème, la solution est :
ou :
ce qui explique aussi pourquoi, dans les exemples trouvés sur le web, qui utilisaient tous dbus-launch, ça ne marchait pas (du moins sous Ubuntu) !
À noter que les changements ne sont pris en compte que lorsque l'usager rouvrira sa session.
La base dconf n'est lue qu'au démarrage de la session, ce qui est plutôt logique dans la pratique.
En mode graphique, on peut modifier la base de registre utilisateur via dconf-editor, sympathique utilitaire graphique, qui permet de modifier des clés/valeurs en un tour de main, tant qu'on reste dans sa session graphique.
En console : on peut utiliser dconf ou gsettings dans un terminal pour lire/écrire les clés/valeurs dans la base de registre. On peut également utiliser systemd pour appeler un script SHELL au démarrage des sessions graphiques, lequel va fixer des réglages communs pour tous les usagers (ce que nous utilisons déjà via notre script maison en réunion informatisée pour info...).
En SSH, si root veut modifier les clés/valeurs pour un utilisateur, il faut faire appel à dbus, sinon ça ne marche pas.
Prenons un simple exemple pour bien illustrer le problème :
Code : Tout sélectionner
su - toto -c "gsettings list-recursively"
Jusque là, tout va bien.
Si maintenant vous voulez changer une clé existante (on ne parle même pas ici d'en créer une nouvelle), vous vous dites qu'il suffit d'un :
Code : Tout sélectionner
su - toto -c "gsettings set org.gnome.Vinagre always-show-tabs true"
On se dit alors que la modification de la base n'est finalement possible qu'en session graphique.
Heureusement, ce n'est pas le cas, et après plusieurs heures passées sur le problème, la solution est :
Code : Tout sélectionner
sudo -H -u toto dbus-run-session gsettings set org.gnome.Vinagre always-show-tabs true
Code : Tout sélectionner
su - toto -c "dbus-run-session gsettings set org.gnome.Vinagre always-show-tabs true"
À noter que les changements ne sont pris en compte que lorsque l'usager rouvrira sa session.
La base dconf n'est lue qu'au démarrage de la session, ce qui est plutôt logique dans la pratique.