<h2>But de ce document</h2>
<p class="spip">Ce document me sert de <strong class="spip">mémo</strong> pour mettre en place un serveur d’impression sous <strong class="spip">Debian</strong> <strong class="spip">Etch avec CUPS et SAMBA.</strong></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=337" class="spip_out">http://www.coagul.org/article.php3 ?id_article=337</a>
<h2>Installation du client et du serveur SSH</h2>
<p class="spip">Étant donné que ce serveur ne disposera pas de clavier et d’écran. Il faut donc commencer par installer le serveur ssh, pour pouvoir le configurer à distance :</p>

<p class="spip"><code class='spip_code' dir='ltr'># aptitude install ssh</code></p>

<p class="spip"><strong class="spip">Remarque </strong> : Laisser les valeurs proposées par défaut aux questions posées.</p>

<h2>Installation de serveur d’impression CUPS</h2>
<p class="spip">Il faut installer le gestionnaire d’impression (CUPS), l’ensemble des drivers (Foomatic) et éventuellement Samba pour pouvoir imprimer sur des imprimantes partagées sous Windows :</p>

<p class="spip">Installation du gestionnaire d’impression (CUPS) :</p>

<p class="spip"><code class='spip_code' dir='ltr'># aptitude install cupsys cupsys-client cupsys-bsd cupsys-driver-gimpprint</code></p>

<p class="spip">Installation des drivers d’impression du package « Foomatic » :</p>

<p class="spip"><code class='spip_code' dir='ltr'># aptitude install foomatic-db-engine foomatic-filters-ppds</code></p>

<p class="spip"><strong class="spip">Remarque </strong> : Si des questions sont posées lors de l’installation de ces paquets, vous pouvez laisser les valeurs proposées par défaut.</p>

<h2>Configuration de CUPS avec un accès Web distant</h2>
<p class="spip">Le paramétrage de CUPS, se fait via une interface Web. Cependant par défaut il n’est pas possible d’accéder à cette interface depuis un autre poste du réseau pour des questions de sécurité.</p>

<p class="spip">Pour activer l’accès réseau, il faut modifier le fichier « <strong class="spip"> /etc/cups/cupsd.conf</strong> ».</p>

<p class="spip">Il faut commencer pour autoriser l’écoute pour tout le réseau en remplaçant cette ligne :</p>

<p class="spip"><code class='spip_code' dir='ltr'>Listen localhost:631</code></p>

<p class="spip">Par celle-ci</p>

<p class="spip"><code class='spip_code' dir='ltr'>Listen *:631</code></p>

<p class="spip">Dans ce fichier, il faut ajouter l’adresse IP ou la classe d’adresses autorisée à accéder à l’interface en ajoutant par exemple la ligne « <strong class="spip">Allow From @LOCAL</strong> » dans la section « <strong class="spip"> <Location /> </strong> », ce qui donne dans mon cas :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code><Location /><br />
Order Deny,Allow<br />
Deny From All<br />
Allow From 127.0.0.1<br />
Allow From @LOCAL<br />
</Location></code></div>
<p class="spip">Pour permettre également d’accéder à l’administration des imprimantes et non pas seulement la gestion, il faut en plus ajouter l’adresse IP ou la classe d’adresses autorisée en ajoutant par exemple la ligne « <strong class="spip">Allow </strong><strong class="spip">From</strong><strong class="spip"> 192.168.0.*</strong> » dans la section « <strong class="spip"><Location /admin></strong> » :</p>

<div style='text-align: left;' class='spip_code' dir='ltr'><code><Location /admin><br />
AuthType Basic<br />
AuthClass System<br />
Order Deny,Allow<br />
Deny From All<br />
Allow From 127.0.0.1<br />
Allow From  @LOCAL<br />
</Location></code></div>
<p class="spip">Ensuite, il faut recharger la configuration de CUPS avec la commande suivante :</p>

<p class="spip"><code class='spip_code' dir='ltr'># /etc/ini.d/cupsys reload</code></p>

<p class="spip">Pour finir, l’interface de configuration doit être accessible avec le navigateur d’un autre poste du réseau à l’adresse IP du serveur CUPS et sur le port 631. Ce qui donne par exemple :</p>

<p class="spip"><code class='spip_code' dir='ltr'>http://192.168.0.1:631/</code></p>

<h2>Permettre à un utilisateur d’administrer les imprimantes</h2>
<p class="spip">Avec la configuration indiquée précédemment, la gestion des d’imprimantes ne demandera pas de mot de passe particulier. Par contre pour accéder à la partie administration (Ajout / suppression d’imprimantes), il faudra indiquer le mot de passe de root ou d’un utilisateur faisant parti des administrateur des imprimantes.</p>

<p class="spip">Pour qu’un utilisateur (ex : monuser) devienne administrateur des imprimantes, il faut l’ajouter au groupe « <strong class="spip"> lpadmin </strong> »</p>

<p class="spip"><code class='spip_code' dir='ltr'># adduser monuser lpadmin</code></p>

<h2>Installation du client Samba </h2>
<p class="spip">Le client Samba permet d’installer sur le serveur Linux des imprimantes partagées par des postes Windows :</p>

<p class="spip"><code class='spip_code' dir='ltr'># aptitude install samba-client</code></p>

<p class="spip"><strong class="spip">Remarque</strong> : Laisser les valeurs par défaut aux questions posées concernant la configuration du serveur Samba.</p>

<p class="spip">Une fois ce paquet installé, il est possible avec l’interface Web d’ajouter des imprimantes sur un périphérique de type « Windows Printer via SAMBA »</p>

<p class="spip">Pour information, l’URI de périphérique pour une imprimante Windows et sous la forme :
<br /></p>
<li> smb ://groupe_de_travail_ou_domaine/serveur/nom_partage
<br /><li> smb ://serveur/nom_partage
<br /><li> smb ://utilisateur:mot_de_passe@groupe_de_travail_ou_domaine/serveur/nom_partage
<br /><li> smb ://utilisateur:mot_de_passe@serveur/nom_partage
<h2>Quelques commandes utiles</h2>
<p class="spip">L’utilitaire « <strong class="spip"> lpadmin </strong> » permet de créer, modifier ou supprimer des imprimantes CUPS en ligne de commande.</p>

<p class="spip">Cette commande permet de connaître l’état des imprimantes :</p>

<p class="spip"><code class='spip_code' dir='ltr'># lpstat -a</code></p>

<p class="spip">Les commandes suivantes permettent de démarrer et d’arrêter les imprimantes indiquées :</p>

<p class="spip"><code class='spip_code' dir='ltr'># cupsenable Imprimante1 Imprimante2</code></p>

<p class="spip"><code class='spip_code' dir='ltr'># cupsdisable Imprimante1 Imprimante2</code></p>

<p class="spip">La commande suivante permet de démarrer toutes les imprimantes :</p>

<p class="spip"><code class='spip_code' dir='ltr'># cupsenable `lpstat -a | cut -d " " -f 1`</code></p>

<h2>Problème rencontré</h2>
<p class="spip">En voulant installer une nouvelle imprimante, l’interface Web de Cups refusait d’afficher la liste des pilotes disponibles.</p>

<p class="spip">En regardant les processus, j’ai remarqué que le processus « cups-driverd » chargeait le serveur à 100% et ne s’arrêtait pas.</p>

<p class="spip">En lançant cette commande manuellement, j’ai constaté que le processus tournait en rond :</p>

<p class="spip"><code class='spip_code' dir='ltr'># /usr/lib/cups/daemon/cups-driverd list 1 0 requested-attributes='ppd-make'</code></p>

<p class="spip">J’ai fini par trouver qu’il fallait supprimer ce lien :</p>

<p class="spip"><code class='spip_code' dir='ltr'># rm /usr/share/ppd/foomatic-rip/foomatic-rip</code></p>

<p class="spip">Et ce fichier :</p>

<p class="spip"><code class='spip_code' dir='ltr'># rm /var/cache/cups/ppds.dat </code></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>15/11/05</td><td>Création par Tony GALMICHE</td></tr>
<tr class="row_odd"><td>0.2</td><td>24/01/07</td><td>Ajout chapitre « Quelques commande utiles »</td></tr>
<tr class="row_even"><td>0.5</td><td>31/05/08</td><td>Mise en ligne</td></tr>
<tr class="row_odd"><td>0.6</td><td>16/09/08</td><td>Ajout chapitre « Problème rencontré »</td></tr>
</tbody>
</table>