Le but de cet article est de vous aider à connecter une station Linux à un serveur Kwartz. Les thèmes suivants seront abordés :

 

  • Installation de Linux : Quelles sont les précautions à prendre et la marche à suivre pour restaurer des postes Linux par le réseau,
  • Authentification des utilisateurs à partir de Kwartz : Comment faire pour authentifier mes utilisateurs en utilisant la base de données du serveur Kwartz et leur offrir un espace de travail,
  • Montage automatique des ressources du serveur kwartz : Comment donner l’accès aux différents dossiers partagés sur le serveur de la façon la plus simple possible pour l’utilisateur,
  • Accès à internet,
  • Configuration DHCP.

Vous trouverez aussi une documentation spécifique :

18/01/2023 : Un tutoriel élaboré avec un serveur Kwartz basé sur Ubuntu/openLDAP + Samba est disponible ici :  : https://maths-code.fr/cours/postes-linux-et-kwartz/.

 

     Pré-requis et mise en garde

Ce document s’adresse avant tout à l’administrateur de la station. Il est donc nécessaire, d’avoir un minimum de connaissance techniques afin de pouvoir correctement installer et configurer l’ensemble des modules. Toutes ces manipulations devront être faites en tant que root et, dans la plupart des cas, les fichiers devront être modifiés à l’aide d’un éditeur de texte.

Lors de cet mise en oeuvre nous n’aborderons que les spécificités liées à l’utilisation du serveur Kwartz et nous ne traiterons pas des problèmes liés à l’installation de la distribution Linux elle-même.

D’autre part, nous ne traiterons que le cas de la distribution Debian Sarge (testing au moment de la rédaction de cette Note d’application). Le cas des autres distributions peut être extrapolé à partir des informations contenues ici.

Enfin, le nom complet du serveur kwartz (fqdn) utilisé dans cet exemple est kwartz-server.mon.domaine.

     Installation de la distribution

L’installation de la distribution ne présente pas de particularité en elle-même. L’utilisation des différents services du serveur Kwartz demandera l’installation et la configuration de certains paquets qui seront décrits dans la suite de ce document. Nous conseillons d’utiliser une installation de type station de travail avec un client DHCP.

Si vous souhaitez utiliser la fonction de restauration automatique des postes Linux par le réseau au démarrage, quelques précautions doivent être respectées :

  • Une seule partition ne peut être restaurée et donc, par conséquence, le Linux doit être installé sur une unique partition.
  • De même seul lilo comme gestionnaire de secteur de démarrage est supporté et devra donc être utilisé (ne pas utiliser Grub). Si votre distribution installe d’autorité Grub (comme la debian sarge apparemment), vous devez installer lilo après avoir tout installé :
apt-get install lilo

Enfin, mais là ce n’est pas spécifique à Linux, il devra rester un espace disque libre à la fin suffisamment dimensionné pour contenir l’ensemble des fichiers de la distribution installée. Nous conseillons de ne pas dépasser la moitié du disque pour la partie du disque effectivement utilisée.

     Authentification des utilisateurs

Pour pouvoir ouvrir une session sur le poste de travail Linux, chaque utilisateur doit être authentifié. Cette authentification peut être faite de deux façons :

  • En utilisant des comptes locaux. Dans ce cas, l’intégration de la station Linux dans le réseau Kwartz ne sera pas optimale et les différents thèmes abordés ici ne seront pas directement exploitables. Ils peuvent néanmoins servir de documentation de base si ce type d’authentification est souhaité.
  • En utilisant l’annuaire LDAP du serveur Kwartz.

ATTENTION ! Une mauvaise configuration des modules PAM peut rendre votre système complètement inutilisable (même le compte root peut être bloqué). Il est donc vivement conseillé de laisser au moins une session ouverte en tant que root pendant toutes ces opérations (par exemple dans une fenêtre ou sur l’une des consoles texte). Vous aurez alors toujours la possibilité de revenir en arrière.


Les utilisateurs inscrits dans le serveur Kwartz sont stockés dans un annuaire LDAP lui-même hébergé par ce serveur. Afin de réaliser l’authentification de la station linux à l’aide de ce dernier, les paquets suivants doivent être installés :

  • libpam-ldap
  • libnss-ldap
  • nscd
apt-get install libpam-ldap libnss-ldap nscd

Les informations de configuration seront les suivantes :

  • serveur ldap : votre serveur kwartz
  • dn : construit à partir de votre domaine IP (par exemple, si votre domaine IP est mon.domaine alors votre dn sera ’dc=nom, dc=domaine’)

Les fichiers à modifier seront :
/etc/pam_ldap.conf

host kwartz-server.mon.domaine  
base dc=nom,dc=domaine
ldap_version 3
pam_password crypt

/etc/libnss-pam

host kwartz-server.mon.domaine  
base dc=nom,dc=domaine
ldap_version 3

/etc/nsswitch.conf

passwd:         files ldap  
group: files ldap
shadow: files ldap
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis

Enfin il faut maintenant modifier les différents fichiers de configuration contenus dans le répertoire /etc/pam.d :
/etc/pam.d/common-account :

account sufficient /lib/security/pam_ldap.so  
account required pam_unix.so

fichier /etc/pam.d/common-auth :

auth    sufficient      pam_ldap.so  
auth required pam_unix.so nullok_secure use_first_pass

     Répertoires home et shell des utilisateurs

Les principales informations renvoyées par le module nss-ldap sont :

  • UID et GID de l’utilisateur. Ces ID commencent à 1001 sur la base LDAP du serveur Kwartz et vous devez veillez à ce qu’ils n’entrent pas en conflit avec des IDs d’utilisateurs et de groupes de votre station. Sur une Debian fraîchement installée cela ne se produit pas. Attention toutefois si vous avez créé des utilisateurs après l’installation de votre station de travail car les UID et GID suivants commencent également à 1001.
  • La propriété shell de l’utilisateur contenue dans la base ldap est /bin/kwartz-sh. Afin que l’utilisateur puisse ouvrir une session vous devez disposer d’un shell portant ce nom de fichier. Nous vous conseillons de créer un lien de /bin/kwartz-sh vers le shell à utiliser (par exemple /bin/bash).
  •  Le répertoire HOME de l’utilisateur est /home/groupe/utilisateur. groupe correspond au nom du groupe d’affectation (groupe primaire) de l’utilisateur. Attention ce répertoire doit exister sur la station avant de pouvoir se connecter.

Afin de préparer la station linux, vous devez effectuer les opérations suivantes :
Créer le shell :

ln -s /bin/bash /bin/kwartz-sh

Pour chacun des groupes contenant des utilisateurs devant ouvrir une session sur la station Linux, vous devez créer les répertoires /home/groupe :

mkdir /home/groupe  
chown groupe: /home/groupe
chmod 2555 /home/groupe

Maintenant il faut créer les répertoires HOME de chacun de vos utilisateurs. Vous pouvez soit vous inspirer de ce qui a été fait ci-dessus pour les groupes ou bien utiliser le module pam_mkhomedir.so contenu dans le paquet libpam-modules qui va s’occuper tout seul de la création du répertoire sur la station. Attention : cette configuration est équivalente à une configuration avec des profils windows locaux et donc les paramètres utilisateurs ne sont pas écrits sur le serveur. Une solution permettant de stocker les profils utilisateurs sur le serveur est pour le moment à l’étude.
Afin d’activer ce module, vous devez mettre dans le fichier /etc/pam.d/common-session la ligne suivante :

session required pam_mkhomedir.so

     Montage automatique des ressources du serveur kwartz

Le serveur kwartz fournit plusieurs ressources partagées utilisables par les différents utilisateurs. Elles sont accessibles par des points de montage samba sur le serveur et, pour pouvoir y accéder, il faut installer le paquet smbfs :

apt-get install smbfs

Afin de donner accès à ces ressources aux utilisateurs de la station Linux le plus simplement possible, nous vous conseillons d’installer le paquet libpam-mount. Ce module permet d’automatiser le montage de ce ressources sans avoir à ressaisir son mot de passe.
La configuration de ce module est faite à l’aide du fichier /etc/security/pam_mount.conf. Le contenu complet de ce fichier est donné ci-après et correspond au fichier installé par défaut à l’exception de la ligne debug et des dernières lignes donnant les différents points de montage :

debug 0 
mkmountpoint 1
fsckloop /dev/loop7
options_allow nosuid,nodev,loop,encryption
options_require nosuid,nodev

lsof /usr/sbin/lsof %(MNTPT)
fsck /sbin/fsck -p %(FSCKTARGET)
losetup /sbin/losetup -p0 "%(before=\"-e \" CIPHER)" "%(before=\"-k \" KEYBITS)" %(FSCKLOOP) %(VOLUME)
unlosetup /sbin/losetup -d %(FSCKLOOP)
cifsmount /bin/mount -t cifs //%(SERVER)/%(VOLUME) %(MNTPT) -o "username=%(USER)%(before=\",\" OPTIONS)"
smbmount /usr/bin/smbmount //%(SERVER)/%(VOLUME) %(MNTPT) -o "username=%(USER)%(before=\",\" OPTIONS)"
ncpmount /usr/bin/ncpmount %(SERVER)/%(USER) %(MNTPT) -o "pass-fd=0,volume=%(VOLUME)%(before=\",\" OPTIONS)"
smbumount /usr/bin/smbumount %(MNTPT)
ncpumount /usr/bin/ncpumount %(MNTPT)
umount /bin/umount %(MNTPT)
lclmount /bin/mount -p0 %(VOLUME) %(MNTPT) "%(before=\"-o \" OPTIONS)" c
cryptmount /bin/mount -t crypt "%(before=\"-o \" OPTIONS)" %(VOLUME) %(MNTPT)
nfsmount /bin/mount %(SERVER):%(VOLUME) "%(MNTPT)%(before=\"-o \" OPTIONS)"
mntagain /bin/mount --bind %(PREVMNTPT) %(MNTPT)
pmvarrun /usr/sbin/pmvarrun -u %(USER) -d -o %(OPERATION)

volume * smb kwartz-server homes ~/remote uid=& - -
volume * smb kwartz-server public ~/public uid=& - -
volume * smb kwartz-server commun ~/commun uid=& - -

Ensuite, pour l’activer, il faut ajouter dans le fichier /etc/pam.d/common-session la ligne suivante :

session required    pam_mount.so

et modifier le fichier /etc/pam.d/common-auth comme suit :

auth    required    pam_mount.so  
auth sufficient pam_ldap.so use_first_pass
auth required pam_unix.so nullok_secure use_first_pass

Notons qu’il n’est pas indispensable que les points de montage remote, public et commun existent car le module pam_mount les crée automatiquement. Si ce fonctionnement n’est pas désiré, il faut modifier le fichier de configuration de pam-mount :

mkmountpoint 0

     Accès à internet

Pour pouvoir accéder à internet, il faut installer et activer le paquet pidentd. Sur une installation standard debian de type station de travail, ce paquet est installé d’office. Sinon, vous devez le faire :

apt-get install pidentd

puis le configurer. Dans le fichier /etc/inetd.conf vous devez avoir une ligne du type :

ident           stream  tcp     wait    identd  /usr/sbin/identd        identd

     Configuration du DHCP

Nous conseillons d’installer la version 3 de dhclient (paquet dhcp3-client) à la place de la version standard qui apporte plus de souplesse dans la gestion du protocole DHCP. Afin de récupérer et de mettre à jour le nom de machine (hostname) il faut créer un fichier /etc/dhcp3/dhclient-enter-hooks.d/hostname avec le contenu suivant :

#!/bin/sh    
if [ "$new_host_name" != "" -a "$new_ip_address" != "" ]
then
# On enregistre le nom de la machine dans la "variable" hostname
hostname $new_host_name

# Pour être cohérent, on met le nom dans /etc/hostname
echo $new_host_name > /etc/hostname

# Enfin on créée /etc/hosts
echo $new_ip_address $new_host_name.$new_domain_name $new_host_name > /tmp/hosts
echo "127.0.0.1 localhost.localnet localhost" >> /tmp/hosts
mv -f /tmp/hosts /etc/hosts
fi

Installer également resolvconf.

     Résumé

  • Installer Linux sur une seule partition dont la taille n’excède pas la moitié du disque
  • Installer lilo et pas grub
  • Installer et configurer un client dhcp
  • Installer et configurer libpam-ldap, libnss-ldap et nscd
  • Créer un lien symbolique de /bin/kwartz-sh sur /bin/bash
  • Créer les répertoires des groupes dans /home
  • Installer smbfs
  • Installer et configurer libpam-mount
  • Installer et configurer pidentd