dimanche 21 septembre 2008

Imprimez avec samba

Avec SAMBA, Imprimez depuis vos client windows

Résumé:

Cet article explique comment utiliser
linux comme serveur d'impression dans un réseau de PC de windows

Pré requis:

Bien que le contenu de l'article est assez facile à suivre, des connaissances minimales en administration
systèmes s'avèrent indispensables pour une bonne compréhension (ajout d'utilisateurs, configuration d'imprimantes, partage samba...)


Environnement matériel et logiciel:

Les exemples que nous donnons tout au
long de cet article, ont été réalisés sur un serveur LINUX FEDORA
8. Sur ce serveur, à part le compte de root, nous avons créé un compte
utilisateur nommé « adel ». Nous avons aussi installé le service
samba avec la commande « yum -y install samba ». L'adresse IP du serveur
est 192.168.1.19.

D'autre part, le client est un PC équipé
d'un système windows XP.

Le partage de ressources informatique
constitue un atout important pour les personnes et les entreprises pour
maîtriser les dépenses. Particulièrement, le partage d'imprimantes
se révèle très utile, vu le coût, parfois élevé,
de l'acquisition de certains types d'imprimantes ainsi que les dépenses
incessantes de l'achat du consommable. Des solutions variées (matérielles
et logicielles) ont été conçus pour offrir une multitude
de choix aux administrateurs qui veulent installer des imprimantes partagées.


Dans cet article, nous présentons une
solution logicielle qui consiste à partager les imprimantes connectées
sur un serveur linux pour un réseau de PCs windows XP. Cette solution
peut être très utile, dans plusieurs situations telles que si
on dispose d'une imprimante qui n'est pas équipée de carte réseau,
si on veut contrôler l'accès..... Plus précisément, nous utiliserons
deux services fournis gratuitement avec la plupart des distributions
linux, à savoir CUPS et SAMBA, pour mettre en place GRATUITEMENT un
serveur d'impression.

Le reste de l'article est organisé comme
suit : dans la section 2, nous présentons CUPS et nous détaillons
la procédure d'ajout d'imprimante sous linux. Dans la section 3, nous
reprenons brièvement la configuration de samba (Les lecteurs sont invités
à la lecture de l'article « Donner des ailes à votre réseau avec
Samba (numéro 2/2008) » pour avoir une meilleure idée sur le serveur
SAMBA). Dans la section 4, nous allons décrire comment utiliser SAMBA
pour partager une imprimante pour le réseau windows. L'accent sera mis sur l'installation automatique des drivers de l'imprimante
en les plaçant sur le serveur d'impression.

Imprimez sous linux avec CUPS

Le Commun Unix Printing System (CUPS)
est un système modulaire d'impression, conçu par Michael
Sweet et Andrew Senft en 1999, pour les systèmes d'exploitation
de la famille Unix. L'utilisation de CUPS est conseillée
grâce notamment aux avantages suivants:


  • CUPS est recommandé par le
    « printing howto »

  • Il supporte le standard Internet
    Printing Protocol (IPP) qui a été intégré par les
    grands fabricants d'imprimantes et par les nouvelles versions de Windows.
    IPP supporte aussi le contrôle d'accès, l'authentification et le cryptage

  • CUPS possède plusieurs interfaces
    graphiques de configuration, mais surtout, il offre une interface Web
    d'administration

  • ...............................


  • Et enfin, SAMBA supporte CUPS

Pour une meilleur documentation sur ce
sujet, veuillez visiter cette adresse (http://www.hlug.org/presentations/cups/printing.html).

Ajouter une imprimante

Nous allons passer directement à l'installation
d'une imprimante avec CUPS. Ceci suppose que CUPS est installé et que
le service cupsd a été démarré correctement. Ouvrez votre navigateur
préféré et tapez l'adresse suivante: http://127.0.0.1:631/.
L'interface d'administration de CUPS va alors s'ouvrir. L'utilisation
de cette interface est intuitive. Nous nous limiterons à détailler
la procédure de l'ajout d'une imprimante. Pour ce faire, allez à la
rubrique « administration » et cliquez sur « add printer ». Un assistant
va vous guider, étape par étape à installer votre imprimante.

étape 1 : spécifiez le nom, l'emplacement
et la description de l'imprimante

étape 2: spécifiez le périphérique
sur lequel l'imprimante est installée. Comme nous l'avons mentionnée
ci-dessus, CUPS prend en charge plusieurs types d'imprimantes:
connectée localement, jet directe, il peut même configurer une imprimante
partagée sur un autre PC windows. Sélectionnez le type de connexion
de votre imprimante.

étape 2a: vous allez éventuellement
devoir spécifier l'URI de votre imprimante dans le cas où
elle n'est pas connectée localement

étape 3: Spécifiez le fabricant de
votre imprimante. Dans cette étape, il vous est aussi possible de donner
directement le driver en format PPD de votre imprimante.

étape 4: spécifiez le modèle de votre
imprimante. Enfin, en cliquant sur le bouton « add printer », votre
imprimante sera ajoutée au système
et vous allez être capable d'imprimer immédiatement.


Pour vérifier que votre imprimante a bien été ajoutée, allez à la rubrique « printers ». Si tout va bien,
vous allez la trouver. Vous pouvez d'ailleurs imprimer la page de test!


A ce stade de l'article, et après avoir
configuré l'imprimante, nous pouvons attaquer la partie réservée
au partage de l'imprimante.


  1. Partage d'imprimante et de fichiers avec samba

Samba est une implémentation Open source
du protocole SMB (Server Message Block), le protocole qui permet de
partager des ressources (fichiers et imprimantes) sur des
réseaux locaux de PC microsoft windows. Ce protocole a évolué dans les dernières versions de Windows pour devenir
CIFS (Common Internet File System).


Concrètement, SAMBA va permettre le partage de fichiers et d'imprimantes d'un serveur (ou tout
simplement d'un PC) Linux pour un réseau de PC windows. Il peut même
agir comme contrôleur de domaine (PDC).

La puissance de samba est dans sa simplicité: Un seul fichier (smb.conf) permet de
tout configurer! Sa syntaxe est simple, voire même triviale pour effectuer
des partages élémentaires. Mais, pour aller plus loin avec SAMBA,
il faut être un administrateur expérimenté.

Toute la configuration de
SAMBA peut être faite à partir du fichier /etc/samba/smb.conf (sur
un serveur linux FEDORA). Ce fichier est composé de sections
et de paramètres. Une section débute par son nom comprit entre deux
crochets et se prolonge jusqu'au début de la section qui suit:

[ global]

Chaque section est composée
d'un ensemble de paramètres sous la forme

nom_paramètre = valeur


Notez que les espaces avant
et après le signe « = » sont obligatoires et que les noms des sections
et des paramètres ne sont pas sensibles à la casse.


Chaque section de ce fichier
(excepté la section [global]) décrit un partage (share en anglais).
Le nom de la section est le nom du partage et les paramètres définissent
ses attributs. Il existe trois sections spéciales :
[global], [homes] et [printers].

La section [global] définit
les paramètres globaux du serveur SAMBA, comme,
le nom du serveur, le nom du groupe, .....

La section [homes] permet aux
utilisateurs d'accéder à leurs répertoires personnels sur le serveur.

Nous venons finalement à
la section qui nous intéresse le plus: c'est la section [printers].
Si cette section est définie, alors les utilisateurs peuvent accéder
aux imprimantes installées sur le serveur. Pour que ce service fonctionne
correctement, il faut que le paramètre printable soit « yes » et que
le répertoire de la file d'attente soit en mode écriture pour tous
les utilisateurs en y positionnant le « sticky bit ».

Par défaut, le fichier
smb.conf contient la section [printers] qui suit:

[printers]

comment = All Printers

browseable= no

path = /var/spool/samba

printable =yes

guest ok = no

read only = yes

create mask= 0700

Vous pouvez vérifier aussi
que le sticky bit est positionné sur le répertoire /var/spool/samba

[root@localhost ~]# ls -l

/var/spool/

total 24

.................................


drwxrwxrwt 2 root
root 4096 2008-06-30 17:56 samba

A ce niveau, nous pouvons
vérifier que la configuration fonctionne correctement. Pour cela, nous
pouvons éditer le fichier smb.conf comme suit:


[root@localhost ~]# cat /etc/samba/smb.conf

[global]

workgroup =WORKGROUP

server string = Samba Server

security = user

load printers = yes

cups options = raw

log file = /var/log/samba/%m.log

max log size = 50

dns proxy = no

[homes]

comment = Home Directories

browseable = no

writable = yes

[printers]

comment = All Printers

path = /var/spool/samba

browseable= no

guest ok = yes

writable = yes

printable = yes

Démarrons maintenant le service SAMBA avec la commande


[root@localhost ~]# service smb restart

Démarrage des services SMB : [ OK ]

Démarrage des services NMB : [ OK ]

Il faut maintenant ajouter les utilisateurs
qui ont le droit de se connecter à samba. Vous pouvez autoriser l'utilisateur
root et un autre utilisateur (adel) à se connecter au système avec
ces commandes:

smbpasswd -a root

et

smbpasswd -a adel

Après chaque commande, le
système va vous demander de taper deux fois le mot de passe pour chaque
utilisateur. Un bon linuxien va toujours faire attention à choisir
un mot de passe sécurisé surtout que cette fois, les mots de passe
vont circuler à travers le réseau. Cette vigilance doit se doubler
particulièrement pour le mot de passe de root.


Passons maintenant au PC client avec
le système windows XP installé dessus. Pour accéder aux différents
partages sur le serveur vous pouvez faire démarrer -> exécuter. Dans
la fenêtre qui apparaît vous pouvez taper


\\192.168.1.19\



Le système va vous demander de vous
identifier. Tout de suite après, la fenêtre de la figure
1 apparaîtra












Vous pouvez alors parcourir
le répertoire personnel sur le serveur linux ou, essayer d'accéder
aux imprimantes. En cliquant sur l'une des imprimantes, un message
d'avertissement parait et signale que le pilote de l'imprimante n'est
pas installé. La fenêtre vous demandera aussi si vous voulez installer
le driver






Il faudra par la suite aller chercher
le driver de l'imprimante et suivre toutes les étapes classiques de
l'installation. Malheureusement, il va falloir répéter cette procédure
sur tous les PC du réseau local, ce qui n'est pas forcément très
pratique, surtout, si l'ont dispose d'un grand nombre de PC sur le réseau
local. Heureusement, samba va nous éviter cette tâche répétitive
en permettant de stocker les fichiers du pilote de l'imprimante sur
le serveur.

  1. point and print

Comme nous l'avons signalé dans la section
précédente, SAMBA permet de stocker les drivers de l'imprimante sur
le serveur. Une première installation demeure nécessaire
et qui permettra de transférer les fichiers du driver depuis le PC
client vers le serveur. Il sera ensuite possible d'installer ce
driver automatiquement pour le reste des PCs. Cette procédure est rendue
possible grâce à la section [print$] du fichier smb.conf.


Nous vous proposons dans un premier temps
d'utiliser la configuration standard suivante:

[print$]

path = /var/spool/samba/

guest ok = yes

browseable = yes

read only = yes

write list = root adel


Le paramètre path permet de définir
le chemin dans lequel les drivers seront installés. Il faut obligatoirement
créer un répertoire W32X86 dans lequel les drivers vont automatiquement
être chargés.


[root@localhost ~]# mkdir /var/spool/samba/W32X86

Il faut aussi s'assurer que
le sticky bit est positionné sur ce répertoire (chmod +t /var/spool/samba/W32X86)

[root@localhost ~]# ll /var/spool/samba/

total 4

drwxrwxrwt 3 root root 4096 aoû 14 15:44
W32X86

Remarque :Le nom du répertoire dépend
du système d'exploitation installé sur le client :

- Windows NT x86 (XP/NT/2000) : w32x86
- Windows 95/98/Me : win40
- Windows NT Alpha_AXP : w32alpha
- Windows NT R4000 : w32mips
- Windows NT PowerPC : w32ppc

Le paramètre guest ok = yes permet au
partage d'être accédé par tous les utilisateurs.

Le paramètre « browseable = yes » rend
ce partage navigable mais en lecture seule grâce au paramètre read
only = yes.

Le paramètre le plus important de cette
section est sans doute write list = root adel qui définit la liste
des utilisateurs ayant le droit d'ajouter des drivers.

Remarque importante:
Pour qu'un utilisateur soit capable d'ajouter un pilote, il faut qu’il
soit root, ou bien listé dans la liste des administrateurs (write list).

Dans notre cas, ce sont les utilisateurs
root et adel qui ont le droit d'installer des drivers.

Continuons à présent avec la procédure
d'installation de l'imprimante. Sur le PC client, sélectionnez l'imprimante
que vous voulez utiliser (epson sur la figure) et cliquez sur propriété
(bouton droit de la souris) et sélectionnez l'onglet avancé. Cliquez
ensuite sur le bouton « nouveau pilote ». Une fenêtre va vous
demander de sélectionner le driver adéquat pour votre imprimante.
En appuyant sur appliquer, le driver va être chargé sur le serveur
(figure 4) au lieu d'être installé localement sur la machine cliente.















Il suffit maintenant de choisir le pilote
adéquat dans le menu déroulant de l'onglet avancé. Pour vérifier
que les fichiers du driver ont été correctement installés sur le
serveur, nous pouvons taper la commande qui suit:

[root@localhost ~]# ll /var/spool/samba/W32X86/3/

total 1392

-rwxr--r-- 1 root root 25305 jui 22 2001 EPE6000.GPD

-rwxr--r-- 1 root root 249344 aoû 23 2001 PCL4RES.DLL

-rwxr--r-- 1 root root 14362 jui 22 2001 STDNAMES.GPD

-rwxr--r-- 1 root root 264704 aoû 19 2004 UNIDRV.DLL

-rwxr--r-- 1 root root 21926 aoû 23 2001 UNIDRV.HLP

-rwxr--r-- 1 root root 199168 aoû 19 2004 UNIDRVUI.DLL

-rwxr--r-- 1 root root 620544 aoû 19 2004 UNIRES.DLL


Notez que les fichiers ont été effectivement chargés. Maintenant, il ne reste qu'à apprécier l'utilisation
de l'imprimante partagée avec ses drivers. Vous n'aurez pas à installer
ce driver sur le reste des PCs clients.














Enfin, un « quick start »

Maintenant, après avoir vu d'une façon
détaillée la procédure nécessaire au partage de l'imprimante et
de ses drivers, nous récapitulons dans cette
section la procédure. Cette section peut être vue comme
une sorte de « quick start »


5.1. Sur le serveur: (en tant que root)


Coté serveur, il faut commencer par
exécuter les actions suivantes :

Installer samba : yum -y installsamba

Éditez le fichier /etc/samba/smb.conf
comme le montre le Listing 1 merci de mettre
ce listing à art comme Listing 1. et se réferer au Listing 1.

Listing 1: Contenu de fichier /etc/samba/smb.conf


[global]

workgroup = WORKGROUP

server string = Samba Server

security = user

load printers = yes

cups options = raw

log file = /var/log/samba/%m.log

max log size = 50

dns proxy = no

[homes]

comment = Home Directories

browseable = no

writable = yes

[printers]

comment = All Printers

path = /usr/spool/samba

browseable = no

guest ok = yes

writable = yes

printable = yes

[print$]

path = /var/spool/samba/

guest ok = yes

browseable = yes

read only = yes

write list = root adel

printer admin = root adel

Ajoutez les utilisateurs root et adel à samba

smbpasswd -a root

smbpasswd -a adel


Ensuite créez le répertoire /var/spool/samba/W32X86/
mkdir /var/spool/samba/W32X86

positionnez le sticky bit de ce répertoire

chmod +x /var/spool/samba/W32X86/3/

(Re)démarrez de service smb

service smb (re)start


5.2. Coté Client


Sur le client, la configuration de l’imprimante
se fait d’abord en accédant au partage démarrer->exécuter->
\\IPSERVER\ (authentifiez vous comme root ou comme adel). Il faut ensuite
Aller à la rubrique imprimantes et télécopies et sélectionner les
propriétés avec le bouton droit. Par la suite, Aller à
l'onglet avancé. L’installation
du driver se fait en cliquant sur le bouton nouveau pilote
qui sera automatiquement être installé sur le
serveur. Il ne reste que de profiter

Conclusion

Cet article a été dédié à détailler
la procédure de partage d'imprimante sur un réseau. C'est une solution
logicielle basée entièrement sur des serveurs libres, à savoir CUPS
et SAMBA, et qui sont distribuées avec la plupart des distributions
récentes de LINUX. Cette solution est libre, gratuite et
peut être facilement mise en place.

Cette solution vient compléter les autres
techniques que nous avons présentées et qui consistent à utiliser
SAMBA comme serveur de partages et comme serveur de domaine pour un
réseau windows. Les administrateurs avancés peuvent combiner toutes
ces techniques pour mettre en place un serveur qui regroupent tous
les aspects présentés.