le monde de crabs (Christophe Cazajus)

D-BUS : at_console avec XDM et Slackware 12.1

Attention Pour slackware 12.1 Attention

La problématique

Sans PAM l'environnement XFCE et KDE se trouve privé de fonctionnalités essentielles pour les utilisateurs telles que le montage de CD ou de disque externe mobile, l'arrêt de la session. Vous avez du voir ce message :

A security policy in place prevents this sender from sending
this message to this recipient, see message bus
configuration file (rejected message had interface
"org.freedesktop.Hal.Device.Volume" member "Mount" error
name "(unset)" destination "org.freedesktop.Hal")

L'administrateur du système doit alors ajouter sur la machine locale des groupes secondaires aux utilisateurs, redémarre D-BUS et le problème est contourné.

Cela est valable pour 3 utilisateurs et 2 machines, mais dans un autre contexte, par exemple 200 utilistateurs itinérants sur des dizaines de machines dans un réseau de 300 machines, tout ça géré dans un annuaire réseau tel que LDAP, avec des arrivées et départs de 10 à 20 utilisateurs par mois, la solution n'est plus adaptée...

Nous allons voir comment contourner ce problème en adaptant XDM :

Après la présentation détaillée de la problématique, de la solution et du mode contournement, vous retrouverez l'ensemble des sources permettant cette adaptation ainsi que la « check list » de mise en place.

La règle « at_console » qu'est ce ?

D-BUS donne des autorisations particulières à la session qui vérifie la règle « at_console ». A la lecture du fichier de configuration /etc/dbus-1/system.d/hal.conf, nous découvrons ces autorisations particulières :

Le problème de cette règle, c'est que sa valeur semble être influencée par le module pam_console, mais quand on est sous Slackware Linux, PAM n'est pas « out of the box » (« livré en standard » semble être la traduction idéale dans ce contexte).

 

Ces autorisations sont aussi ouvertes à certains groupes : power, video et plugdev. Mais il faut que les inscriptions soient faites dans l'annaire group au démarage de hald et de D-BUS. Ces groupes sont aussi utilisés par UDEV pour créer dynamiquement les chemins d'accès dans le dossier /dev.

Quand on met en place un annuaire réseau - NIS (yellow page) ou LDAP - donner ces droits peut avoir un impact non négligeable sur la sécurité : tous les utilisateurs auraient le droit d'éteindre les serveurs, le poste du voisin... Il faut donc trouver un fonctionnement se rapprochant de PAM en rendant vraie la règle at_console.

Hack de « D-BUS » et « fake » de pam_console

« Hacker » signifier ici « comprendre par la lecture des fichiers source », et « fake » signifie « simuler » la règle pam_console.

Après décompression du source utilisé par la version 12.1 de Slackware Linux, puis quelques find ... grep, une solution semble assez évidente et facile à mettre en oeuvre :

 

Vérification : création d'un utilisateur atconsole, du groupe users sans groupe secondaire, création en tant que root du fichier /var/run/console/atconsole, connexion avec le compte atconsole en mode console, lancement de XFCE grace à startx. Comme par magie, j'ai la possibilité de monter les clés USB, les CDROM, les boutons Eteindre et Redémarrer sont actif dans la fenètre de déconnexion. Hypothèse vérifiée.

 

Faire un « fake » de pam_console semble donc assez facile, il faudra s'astreindre à :

Nous allons donc devoir gérér proprement les débuts et fins de sessions des utilisateurs sur les consoles...

XDM

X Display Manager propose une interface basique de connexion des utilisateur en mode graphique.

Après recherche rapide, le produit « out of the box » qui permet de gérer facilement le début et la fin de session d'un utilisateur en mode graphique, c'est XDM. Si on regarde en détail le source, XDM peut gérer une connexion en générant des tickets Kerberos, utile pour LDAP, ou des certificats Sun Secure RPC utilisées avec l'annuaire NIS+. Ces fonctionnalités natives de XDM ne rendent pas PAM nécessaire...

 

Dans les sources de XDM, le define USE_PAM indique si le support de PAM est actif ou non. Nous simulerons donc pam_console que si le support de PAM n'est pas actif.

La solution semble aisée, c'est sans aller voir de plus prêt, car avoir l'autorisation de D-BUS n'est pas suffisant, il faut de temps en temps des droits classiques sur les périphériques que udev protège souvent à l'aide de groupe UNIX. Autant la Shadow Password Suite propose de rajouter des groupes UNIX à l'utililisateur se connectant à la console autant XDM n'a pas cette possibilité.

Les groupes ajoutés par la Shadow Password Suite sont définis dans la variable CONSOLE_GROUPS, elle-même renseignée dans le fichier /etc/login.defs.

Un petit défaut de XDM c'est qu'il ne dispose pas « out of the box » d'une sélection simple des différents environnement graphique disponible, mais cette fonctionnalité peut être ajouter simplement à XDM, cela fera l'objet d'un prochain article.

Implémentation de la solution

La plus part des modifications seront faite en modifiant la zone de construction des packages fournie par la Slackware Linux. Nous allons néanmoins essayer de détailler ce qui est modifié,pourquoi et comment. Ces fichier sont contenues dans l'archive que vous pouvez télécharger à la fin de l'article.

 

Les modifications suivantes seront directement faites sur les fichiers sources de XDM lors de la construction du package.

 

dm.h par le patch patch/xdm/dm_h.diff.gz

Ajout de la variable globale consoleGroups qui contiendra la valeur de la ressource DisplayManager.consoleGroups.

 

ressource.c par le patch patch/xdm/resource_c.diff.gz

La modification porte sur la recherche de la valeur de la ressource.

 

session.c par le patch patch/xdm/session_c.diff.gz

La modification porte sur 3 actions :

 

xdm-config par le patch patch/xdm/config_xdm-config_cpp.diff.gz

Ajout d'une valeur de pour consoleGroups et d'un commentaire d'avertissement. Les groupes qui seront rajoutés lors d'une connexion sur la console sont : floppy, audio, video, cdrom, plugdev et power.

 

Les modifications suivantes sont faites sur les fichiers qui servent à la construction du package.

 

build/xdm

Nous changeons le « 1 » en « 2crabs » pour permettre facilement la mise à niveau via upgradepkg.

 

patch/xdm.patch

Ce script contient les lignes de commandes qui permettent d'appliquer les patches décrits précédement.

 

post-install/xdm/Xsetup_0

Nous ajoutons ici le nettoyage de la zone /var/run/console afin qu'un seul utilisateur ait les droits at_console.

 

slack-desc/xdm

Ajout de commentaires dans la description du package afin que les administrateurs soient au courant de la modification du package XDM qui touche à des aspects de sécurité.

Mise en place

Télécharger les fichiersTélécharger les fichiers nécessaires aux modifications.

# cd repertoire_de_travail
# export TMP=`pwd`

Après avoir monter le DVD officiel de la Slackware 12.1

# cp -r /media/SlackDVD/source/x/x11 x11
# cd x11
# tar xf chemin_de_download/dbus_at_console_xdm.tar

avec les droits root

# ./x11.SlackBuild app xdm
# cd ../x11-build

Le nouveau package est là

# upgradepkg xdm-1.1.7-i486-2crabs.tgz

Terminer la configuration

# cd /etc/X11/xdm
# cp xdm-session.new xdm-session

Si le « runlevel » est 4 (graphique)

# init 3

Désactiver GDM (si installé) et KDM

# chmod -x /usr/bin/gdm
# chmod -x /usr/bin/kdm

On repart en mode graphique

# init 4

N'hésiter pas à vérifier et adapter la ressource DisplayManager.consoleGroups dans le fichier /etc/X11/xdm/xdm-config.

Renseignez-vous sur les brevets logiciels en Europe :

NoSoftWarePatents.com (en français)

Les images représentant des sociétes, des associations ou des marques restent associées, par un lien, à ces sociétés, associations ou marques. Elles ne signifie en rien que ces sociétés, associations ou marques soutiennent ce site.

Sauf précisions contraire, le contenu de ce site est mis à disposition sous un contrat Creative Commons.

Les informations fournies le sont sans aucune garantie. L'auteur ne pourra être tenu responsable de leurs utilisations.

De par l'utilisation du HTML 4.01 Strict et des CSS 2.1, le monde de crabs sera correctement vu avec les navigateurs respectant ces normes, Mozilla ou FireFox par exemple.

Site : Le Monde de Crabs
Titre : D-BUS : at_console avec XDM et Slackware 12.1
Date du document : 18/09/2008
Auteur : Christophe Cazajus
Mail : crabs(mettre le @)crabs-world.com
ou utiliser ce formulaire de contact
Mots-clé : crabs, monde, francais, francophone, français, linux, slackware, slackware 12.1, hal, dbus, d-bus, plugdev, console groups, xdm, at_console, pam_console
Description : Comment profiter au maximum de HAL, D-BUS avec les environnements graphiques modernes avec Slackware 12.1. Etude et solution avec XDM et XFCE
Validation : html, csshtml, ccs
The Linux Counter
Info iconelvis iconbash iconphp icongimp iconpovray iconxml iconxslt iconcss iconhtml icon
Slackware Linux
Creative Commons License

Le calendrier et les scores du Stade Toulousain sont accessibles sur cette page : Le monde de crabs et le Stade Toulousain.

Crabs's World : English Section