<h2>But de ce document</h2>
<p class="spip">Ce document me sert de mémo pour monter automatiquement des partages samba d’autres postes du réseau en fonction du login de connexion.</p>

<p class="spip">L’utilisateur connecté sur le poste Linux, peut donc parcourir les fichiers des autres postes en fonction de ses propres droits.</p>

<p class="spip">Ce mémo a été écrit et testé pour une Debian Testing, mais il doit être possible de l’adapter facilement à d’autres distributions.</p>

<h2>Pré-requis</h2>
<p class="spip">Avoir installé une Debian de Base :
<br /></p>
<li> cf mon autre document sur ce sujet : <a href="http://www.coagul.org/article.php3?id_article=158" class="spip_out">http://www.coagul.org/article.php3 ?id_article=158</a>
<h2>Problèmes posés avec le montage classique par « fstab »</h2>
<p class="spip">Un montage classique est paramétré dans le fichier « /etc/fstab ».</p>

<p class="spip">Tous les montages indiqués dans ce fichier sont montés (automatiquement ou pas) au démarrage du système.</p>

<p class="spip">Les montages sont communs à tous les utilisateurs et les droits sont ceux indiqués dans les options de ce montage.</p>

<p class="spip">Il n’est pas possible d’avoir des montages différents ou des droits différents sur les montages en fonction de l’utilisateur connecté.</p>

<h2>Installation libpam-mount</h2>
<p class="spip">Paquet à installer :</p>

<p class="spip"><code class='spip_code' dir='ltr'>apt-get install libpam-mount</code></p>

<p class="spip">Autres paquets à installer pour monter des partitions samba :</p>

<p class="spip"><code class='spip_code' dir='ltr'>apt-get install smbfs smbclient</code></p>

<h2>Configuration du fichier « /etc/security/pam_mount.conf »</h2>
<p class="spip"><strong class="spip">Remarque </strong> : Le caractère « \ » indiqué dans les lignes de configuration de ce chapitre correspond à un saut de ligne. Il ne faut pas le mettre et supprimer le saut de ligne.</p>

<p class="spip">Le fichier « pam_mount.conf » est le fichier principal de configuration de « libpam-mount »</p>

<p class="spip">Pour monter un partage automatiquement, il faut ajouter à la fin du fichier, une ligne du type :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>volume <user> [smb|ncp|nfs|local] <server> <partage> <mount point> <mount options> \<br />
  <fs key cipher> <fs key path></code></div>
<li> user : Nom de l’utilisateur ou « * » pour tous les utilisateurs.
<br /><li> server : Nom ou adresse IP du serveur
<br /><li> partage : Nom du partage à monter. 
<br /><li> mount point : Point de montage du partage. Si le dossier n’existe pas, il sera créé automatiquement
<br /><li> mount options : Options de montage correspondant au système de fichiers à monter (Les mêmes que pour /etc/fstab).  Mettre un tiret si ce paramètre n’est pas utilisé.
<br /><li> fs key cipher : Indique le type de clé à utiliser pour crypter (non testé). Mettre un tiret si ce paramètre n’est pas utilisé.
<br /><li> fs key path : Indique le chemin d’accès au fichier contenant la clé (non testé). Mettre un tiret si ce paramètre n’est pas utilisé.
<p class="spip"><strong class="spip">Remarque</strong> : Si « * » est utilisé pour le paramètre <user>,  le caractère « & » correspondra au login de l’utilisateur.</p>

<p class="spip">Voici un exemple pour monter le dossier partagé « Utilisateurs » du serveur « pglinux » sur le point de montage «  /Reseau/pglinux » pour tous les utilisateurs (Le signe correspond au répertoire home de l’utilisateur) :</p>

<p class="spip"><code class='spip_code' dir='ltr'>volume * smb pglinux Utilisateurs ~/Reseau/pglinux - - -</code></p>

<p class="spip">Voici le même exemple avec des options de montage :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>volume * smb pglinux Utilisateurs ~/Reseau/pglinux uid=&,gid=&,fmask=0700,dmask=0700, \<br />
  workgroup=VOTREDOMAINE,iocharset=iso8859-1,codepage=cp850 - -</code></div>
<p class="spip">Voici le même exemple valable uniquement pour l’utilisateur tony (Dans ce cas, le signe « & » n’est plus utilisable) :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>volume tony smb pglinux Utilisateurs ~/Reseau/pglinux uid=tony,gid=tony, \ <br />
  fmask=0700,dmask=0700,workgroup=VOTREDOMAINE,iocharset=iso8859-1,codepage=cp850 - -</code></div>
<p class="spip">Débugage : La première ligne de ce fichier permet également d’activer le débugage pour comprendre ce qui ne fonctionne pas :</p>

<p class="spip"><code class='spip_code' dir='ltr'>debug 1</code></p>

<p class="spip">Si vous ne souhaitez pas que les points de montage soient créés automatiquement s’ils n’existent pas, il faut modifier la ligne suivante :</p>

<p class="spip"><code class='spip_code' dir='ltr'>mkmountpoint 0</code></p>

<h2>Configuration de pam</h2>
<p class="spip"><strong class="spip">ATTENTION</strong> : Avant de modifier la configuration de pam, il est vivement conseillé d’ouvrir une console sous root (ALT+F1) et de ne pas la fermer tant que tout ne fonctionne pas correctement. <strong class="spip">Une mauvaise configuration de pam peut empêcher toute connexion même sous root</strong>.</p>

<p class="spip"><strong class="spip">Remarque </strong> : Il existe plusieurs façons de configurer pam, car cela dépend de ce que l’on veut faire. Il est possible de monter les partitions depuis toutes sortes de connexions (via kdm, login, su, ssh) ou seulement depuis une seule sorte de connexion (ex : kdm). De plus la configuration de pam dépend également de la configuration actuelle du système. Dans ce mémo, je pars du principe que pam n’a jamais été modifié sur la Debian Testing.</p>

<h3>Montage des partitions avec tous les types de connexion</h3>
<p class="spip"><strong class="spip">Remarque </strong> : Les fichiers de configuration de pam sont situés dans « /etc/pam.d/ ». dans ce dossier on trouve un fichier par type de connexion (kdm, su, ssh,..) et des fichiers communs à tous (common-account, common-auth,...)</p>

<p class="spip">Pour que le paramétrage soit valable pour tous les modes de connexion, il faut donc modifier les fichiers communs.</p>

<p class="spip">Il faut ajouter la ligne suivante dans le fichier « /etc/pam.d/common-session » :</p>

<p class="spip"><code class='spip_code' dir='ltr'>session required pam_mount.so</code></p>

<p class="spip">Il faut ajouter la ligne suivante au <strong class="spip">début du fichier</strong> « /etc/pam.d/common-auth » :</p>

<p class="spip"><code class='spip_code' dir='ltr'>auth  required  pam_mount.so</code></p>

<p class="spip">Et ajouter « <strong class="spip">use_first_pass</strong> » à la ligne suivante pour que le mot de passe utilisé par la ligne précédente soit réutilisé sans devoir le saisir plusieurs fois :</p>

<p class="spip"><code class='spip_code' dir='ltr'>auth  required  pam_unix.so nullok_secure use_first_pass</code></p>

<h3>Montage des partitions uniquement avec une connexion de type « su »</h3>
<p class="spip">Par défaut la configuration du fichier « /etc/pam.d/su »ressemble à ceci :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>auth       sufficient pam_rootok.so<br />
@include common-auth<br />
@include common-account<br />
@include common-session</code></div>
<p class="spip">Les lignes commençant par un « @ » permettent d’inclure les fichiers indiqués.</p>

<p class="spip">En intégrant les fichiers importés et en ajoutant les lignes nécessaires à la configuration de pam, le fichier « /etc/pam.d/su » pourrait ressembler à ça :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>auth    sufficient  pam_rootok.so<br />
auth    required    pam_mount.so<br />
auth    required    pam_unix.so nullok_secure use_first_pass<br />
account required    pam_unix.so<br />
session required    pam_unix.so<br />
session required    pam_mount.so</code></div>
<h3>Montage des partitions uniquement avec une connexion de type « kdm »</h3>
<p class="spip">Si kde est installé sur le poste et si vous souhaitez effectuer le montage des partitions uniquement à la connexion via kdm, vous pouvez modifier le fichier « « /etc/pam.d/kdm » comme ceci :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code>auth       required   pam_mount.so<br />
auth       required   pam_unix.so nullok_secure use_first_pass<br />
account    required   pam_unix.so<br />
password   required   pam_unix.so nullok obscure min=4 max=8 md5<br />
session    required   pam_unix.so<br />
session    required   pam_mount.so<br />
auth       required   pam_nologin.so<br />
auth       required   pam_env.so<br />
session    required   pam_limits.so</code></div>
<h2>Test de la configuration</h2>
<p class="spip">Si vous avez modifié le fichier « su », il faut faire un « su » sur l’utilisateur à tester et vérifier que tout est bien monté. Si le débugage a été activé (debug 1), de nombreuses lignes d’informations s’afficheront à l’écran juste après la saisie du mot de passe.</p>

<p class="spip">Si vous avez modifié le fichier « kdm », il faut se reconnecter via kdm.</p>

<h2>Historique des modifications</h2>
<table class="spip">
<thead><tr class='row_first'><th scope='col'><strong class="spip">Version</strong></th><th scope='col'><strong class="spip">Date</strong></th><th scope='col'><strong class="spip">Commentaire</strong></th></tr></thead>
<tbody>
<tr class="row_even"><td>0.1</td><td>31/05/05</td><td>Création par Tony GALMICHE</td></tr>
<tr class="row_odd"><td>0.2</td><td>26/09/05</td><td>Ajout différentes configurations de pam</td></tr>
</tbody>
</table>