Soumis au bon vouloir de ConsoleKit.

Pour ceux à qui ConsoleKit ne dit rien du tout, vous pouvez vous référer aux pages wiki archlinux.fr (les explications étant génériques): wiki consolekit.

En bref, ConsoleKit s’occupe de traquer l’état des sessions de l’utilisateur en suivant des données parmi lesquelles:

  • l’état actif de la session.
    ex: vous avez lancé X et avez changé vers un terminal (ctrl-alt-f1), votre session X n’est plus active.
  • l’emplacement de la session
    ex: une connexion depuis ssh n’est pas « locale ».

Ces deux informations influencent directement toutes les actions sur les périphériques (si gérés par des programmes compatibles), par exemple, PCManFm ou Nautilus passent par PolicyKit (wiki) pour savoir s’ils ont la permission de monter un périphérique ou pas.

Cette introduction pour dire qu’à partir de la version 0.4.2 de ConsoleKit, qui est notamment celle disponible sur le dépôt [testing] d’Arch Linux, la détection d’une session locale change de méthode.

Avant, c’était plus en devinant que le programme déterminait l’état « locale » ou non de la session, il suffisait d’avoir un:

exec ck-launch-session openbox-session
# ou autre environnement de bureau

dans le $HOME/.xinitrc, et suite au startx, la session était locale et les droits étaient donnés à l’utilisateur.

A partir de la 0.4.2, seul le root peut définir l’état « locale », et adieu les permissions pour les utilisateurs n’utilisant pas de gestionnaire de connexions compatibles tel GDM. PCManFm ou Nautilus nous sortent une belle fenêtre « Not authorized » à chaque tentative de montage.

La solution consiste à ajouter un connecteur PAM pour que ce soit le root qui crée la session en lui donnant pour le coup le bon état.

Pour une connexion depuis le terminal (par le programme « login »), il faut avoir:

session		optional	pam_ck_connector.so

dans /etc/pam.d/login.

Si vous utilisez un gestionnaire de connexions tel que SLiM, il faut faire pareil dans /etc/pam.d/slim.


FS#21391

Commentaire (1)