Serveur d'impression avec Samba sous Fedora Core


printer
Voici un petit tutorial pour mettre en place un serveur d'impression sous Samba, pour des machines clientes Windows, avec utilisation des drivers disponibles sur le serveur. J'ai testé cette méthode avec une Fedora Core 4 et un serveur HP ProLiant DL.

1. Pré-requis

  • samba et cups sont installés sur la machine et fonctionnent correctement
  • l'utilisateur root à été ajouté dans la base de compte à l'aide de la commande smbpasswd -a root

2. Configuration du serveur Samba

La première étape consiste à modifier le fichier de configuration /etc/samba/smb.conf pour passer samba en serveur d'impression. On va donc y rajouter les quelques lignes suivantes dans la section [global] :

# On charge les options d'impression
load printers = yes
# Systeme d'impression utilisé par le serveur d'impression
printing = cups
printcap name = cups

On va ensuite ajouter une nouvelle section permettant de partager toutes les imprimantes disponibles sur le serveur :

# Section de partage des imprimantes
[printers]
comment = Imprimantes
# Chemin du spool path = /var/spool/samba
# Les invités peuvent imprimer
guest ok = Yes
# Imprimante visible lors du parcours du réseau
browseable = Yes
writable = no
printable = Yes
# On utilise les drivers disponible sur le serveur pour imprimer
# Si option = yes, la commande cupsaddsmb ne marchera pas
use client driver = no
# Administrateur des imprimantes
printer admin = root

Et pour finir, on va créer le partage print$ qui contient les pilotes d'impression auxquels les clients peuvent avoir accès, s'ils ne sont pas disponibles localement :

# Section de partage des drivers [print$]
comment = Drivers pour imprimantes
# Chemin des drivers
path = /etc/samba/drivers
browseable = yes
guest ok = yes
read only = yes
# Compte autorisé à ajouter de nouveau drivers sur le serveur
write list = root

3. Installation des imprimantes et configuration de Cups

Nous allons maintenant installer les imprimantes sur notre serveur. Pour cela, il existe deux méthodes :

  • Interface web : sur votre machine, tapez l'url http://localhost:631. Cliquez sur "Administrer les imprimantes" et laissez-vous guider.
  • Interface graphique (distrib fedora et red hat uniquement) : tapez la commande system-config-printer dans un terminal et laisser-vous guider aussi.

Moi je préfère la seconde méthode, mais chacun fait comme il veut. Pour ce qui est des imprimantess réseaux, on utilisera le plus souvent le protocol JetPrinter, tandis que pour celle qui sont reliées à des oridinateurs, se sera smb.

Les pilotes d'imprimante Windows formatent leur sortie avant de l'envoyer à travers le réseau. Vous devez configurer CUPS pour accepter la sortie pré-formatée en enlevant le commentaire (#) de la ligne suivante, dans le fichier /etc/cups/mime.convs :

application/octet-stream application/vnd.cups-raw 0 -

Vous devrez aussi dé-commenter la ligne suivante dans /etc/cups/mime.types :

application/octet-stream

4. Mise en marche des serveurs

Maintenant on va :

  • déclarer toutes les imprimantes installer à samba : cupsaddsmb -H localhost -U root -a
  • relancer le serveur samba : /etc/init.d/smb restart
  • relancer le serveur cups : /etc/init.d/cups restart

Il nous reste plus qu'a vérifier que nos imprimantes sont bien partagées :

# rpcclient -d=0 -U root -c 'enumprinters' localhost
Password:
flags:[0x800000]
name:[\\xblade\HP DeskJet 722C]
description:[\\xblade\HP DeskJet 722C]
comment:[HP DeskJet 722C]

A ce stade, notre serveur d'impression fonctionne correctement, et nos clients Windows peuvent installer les imprimantes en parcourant le réseau et en double cliquant sur ces dernières. Seulement, lors de l'installation, Windows leur demandera de fournir localement les drivers pour chaque installation.

5. Installation des drivers Windows sur le serveur

Nous allons voir ici, comment faire en sorte, pour que lors de l'installation d'une imprimante sur un poste client, Windows se débrouille pour utiliser les drivers qui sont disponibles sur le serveur.

Au préalable nous devons créer le dossier drivers (cf. [print$]) :
mkdir /etc/samba/drivers/

et les sous-dossiers suivant, selon le système d'exploitation des clients :

  • drivers to Windows NT x86 (XP/NT/2000) : mkdir /etc/samba/drivers/w32x86
  • drivers to Windows 95/98/Me : mkdir /etc/samba/drivers/win40
  • drivers to Windows NT Alpha_AXP : mkdir /etc/samba/drivers/w32alpha
  • drivers to Windows NT R4000 : mkdir /etc/samba/drivers/w32mips
  • drivers to Windows NT PowerPC : mkdir /etc/samba/drivers/w32ppc

Il existe deux méthodes d'ajout des drivers :

  • depuis le serveur samba, en utilisant des commandes rpc incompréhensibles, voir inutilisables
  • depuis un client Windows avec quelques cliques de souris

On va donc utiliser la seconde méthode. Sur votre Windows favori, positionnez vous sur le print$ du serveur afin qu'il vous demande de vous authentifier comme le montre cette capture d'écran :

printer

Puis allez dans le dossier Imprimantes et télécopieurs, faite un clic droits sur une imprimante pour aller dans ses propriétés, puis l'onglet avancé. Comme l'imprimante à été installé sous linux, notre serveur samba utilise par défaut des drivers pour ce système. Il nous faut alors les changer, par des pilotes Windows, en cliquant sur le bouton nouveau pilote :

printer

Afin de ne pas avoir de problème durant l'installation, je conseil de recopier les drivers en local sur la machine windows et ensuite de lancer l'installation.

Vous pourrez également affiner les paramètres du serveur d'impression, en faisant un clic droits dans une zone blanche, propriétés du serveur :

printer

6. Les tests finaux

Il ne vous reste plus qu'a tester votre serveur, en double cliquant sur une imprimante partagée. Cette dernière devrait alors s'installer automatiquement après avoir téléchargé les pilotes.

On peut également vérifier la présence des drivers depuis notre serveur, avec la commande suivante :

# rpcclient -d=0 -U root -c 'enumdrivers' localhost
Password:
[Windows NT x86]
Printer Driver Info 1:
Driver Name: [HP DeskJet 722C]

7. Aller plus loin

On pourra améliorer la sécurité, en mettant le /var/spool/ sur une partition dédiée. Ainsi, lors d'un remplissage de la file d'attente, notre système continuera de fonctionner, car il lui restera de l'espace libre sur sa propre partition. Certain pourront même déclarer un chemin de spool différent pour chaque imprimante.

Autres documentations :  HOWTO Samba  doc gentoo


25 Commentaires pour "Serveur d'impression avec Samba sous Fedora Core"

Flux des commentaires de cet article Ajouter un commentaire
  •  

    Astuce pour la gestion des imprimantes de cups :

    - Sauvegarder les imprimantes installés dans cups :
    /usr/sbin/system-config-printer-tui --Xexport > settings.xml

    - Restaurer les imprimantes dans cups :
    /usr/sbin/system-config-printer-tui --Ximport < settings.xml

    - Si on veut rajouter les imprimantes contenu dans le fichier à la suite :
    /usr/sbin/system-config-printer-tui --Ximport --merge < settings.xml

    - Commande pour ajouter une imprimante parralèle dans cups :
    /usr/sbin/lpadmin -p DeskJet -E -v parallel:/dev/lp1 -m deskjet.ppd

    - Ajouter une imprimante réseaux dans cups :
    /usr/sbin/lpadmin -p MonNom -E -v socket://10.238.125.91:9100 -D MaDescription -L MonEmplacement -P xw55pSd.ppd

    RépondreRépondre
    pti-seb , le 30 décembre 2005 à 23:31
  •  

    Article trés intéressant !!
    Bravo !

    RépondreRépondre
    plutonium , le 12 janvier 2006 à 14:19
  •  

    En fait, j'ai une grosse erreur quand je fais :

    [root@zurich /]# cupsaddsmb -H localhost -U root -a
    Password for root required to access localhost via SAMBA:

    et aucun de mes mots de passe ne marchent !!
    :\

    RépondreRépondre
    plutonium , le 15 janvier 2006 à 22:14
  •  

    J'ai également rencontré cette érreure, il faut :

    - avoir déclaré le mot de passe root avec smbpasswd -a
    - l'option use client driver = no du smb.conf doit être à no obligatoirement

    RépondreRépondre
    pti-seb , le 15 janvier 2006 à 23:29
  •  

    Sans être trop méchant, j'ai essayé cette méthode ...
    Ya du bien et ya du moins bien !!!!
    Mon Windows XP foire sur l'installation d'une imprimante sur un serveur FC4 :( depuis que j'ai fais cette méthode.
    Il me demande d'installer un fichier INF (inconnu) et refuse tout les autres !!!
    Bizarre

    J'ai ensuite suivi ce tuto :
    http://www.trustonme.net/didacte...

    RépondreRépondre
    Plutonium , le 19 janvier 2006 à 18:29
  •  

    Si ton windows n'arrive pas à installer une imprimante sur ta FC4, c'est juste un problème de droits, car il n'arrive pas à copier les fichiers sur le serveur.

    Lorsque tu as ouvert le dossier print$ de ta FC4 depsui ton windows, tu t'es bien loggé avec le compte root ?

    As-tu bien positionnez les droits d'écriture dans samba et le dossier à partagé ?

    RépondreRépondre
    pti-seb , le 21 janvier 2006 à 15:42
  •  

    Je viens de regardé le tuto de trustonme que tu as suivis, et bien c'est la même chose au niveau de la configuration. Il précise juste les droits du dossier drivers avec :

    # mkdir /etc/samba/drivers
    # chmod 755 /etc/samba/drivers
    # chown root.root /etc/samba/drivers

    Chose que je n'ai pas dit, mais qui je pense t'as posé problème ...

    RépondreRépondre
    pti-seb , le 21 janvier 2006 à 15:47
  •  

    Ben disons que c'est une imprimante qui foire !!
    J'ai 2 HP.
    Ma HP Deskjet 720c fonctionne parfaitement avec ton tuto mais l'autre ....
    C'est bizarre.
    C'est une HP Photosmart 7450.
    Je m'en occupe.
    En tout cas, ce tuto m'aura bien aidé.
    Merci

    RépondreRépondre
    plutonium , le 25 janvier 2006 à 16:41
  •  

    Juste une chose à préciser.

    Les drivers ne sont pas recopiés sur le poste client... Le client utilise les pilotes situés sur le serveur, par l'intermédiaire du partage !

    De plus, il n'est pas obligatoire d'utiliser root, mais tu peux donner les droits à n'importe quel utilisateur (ou groupe), ce qui te permettra de ne t'identifier qu'une seule fois.

    Sinon belle documentation.

    A bientôt.

    RépondreRépondre
    kartnico , le 3 novembre 2006 à 23:45
  •  

    Rectification,

    Après test, les pilotes sont bel et bien recopiés sur le poste client.

    Merci à bientôt.

    RépondreRépondre
    kartnico , le 11 novembre 2006 à 15:50
  •  

    Petite question, je viens de finir l'installation, tout marche parfaitement sauf une imprimante pour laquelle j'ai un message me demandant de mettre du papier a lettre et de faire reprendre alors que mon imprimante est bien configurée en format de papier A4, si je fait directement reprendre sa marche, une idée sur la provenance du problème ???
    Précision, sa fonctionne avec windows sans problème.

    RépondreRépondre
    lthebault , le 27 août 2007 à 13:39
  •  

    @lthebault : aucune idée, regarde peut-être du coté des forums spécialisés.

    RépondreRépondre
    pti-seb , le 28 août 2007 à 13:21
  •  

    @lthebault : j'ai exactement le même problème que toi, lorsque j'installe une imprimante configuré en A4 sur le serveur, celle ci se remet en letter sur le poste client??!!
    Je n'arrive pas a trouver de solution mais j'ai remarque ce cela se passait plutôt avec les HP et Canon.

    RépondreRépondre
    Antoine , le 5 mars 2008 à 16:23
  •  

    J'ai aussi ce pb (Letter / A4). A priori je ne pense pas que ce soit lié à la config des ppd mais où? Quelqu'un a-t-il trouvé la solution?
    Merci

    RépondreRépondre
    fred , le 16 mai 2008 à 13:11
  •  

    Bonjour,

    J'ai suivis ton tuto, pour crée un contrôleur de domaine avec samba, puis un serveur d'impression avec cups.

    Mon serveur d'impression fonctionne, mais le soucis viens du poste XP.

    Quand je viens faire l'installation d'un imprimante, j'ai l'erreur suivante: Une stratégie en place sur votre ordinateur vous empêche de vous connecter à cette file d'attente d'impression. Contactez votre admin système."

    J'ai tester avec le compte test ,mais aussi avec mon compte root...

    Si tu as une idée, encore merci pour ces tutos.

    RépondreRépondre
    Titus , le 20 mai 2008 à 10:36
  •  

    Meme probleme pour moi, si quelqu'un a une solution.....

    RépondreRépondre
    teckboy62 , le 26 juin 2008 à 11:08
  •  

    @Titus et @teckboy62 : je n'ai aps la solution, mais il s'agit ici clairement d'un problème de droits sur le post client sous Windows Xp.

    RépondreRépondre
    pti-seb , le 26 juin 2008 à 12:30
  •  

    Bonjour,
    Je viens de suivre le tuto à la lettre.
    Premièrement, la commande "cupsadd -H localhost -U root -a" ne fonctionne pas.
    J'ai le message d'erreur suivant : "bash: cupsadd: command not found"

    J'ai quand même continué la suite du tuto.

    Mon problème viens quand je veux installer les pilotes windows.
    Au début tout se passe correctement. Je valide la fin de la copie des drivers. Tout semble bon.
    Mais quand je regarde dans le dossier /etc/samba/driver/w32x86, celui-ci est vide.

    J'ai regardé au niveau des droits, mais sa ne change rien.
    Donc sur un client windows, quand je souhaite installer l'imprimante, il me dit que le serveur ne dispose pas des drivers.

    Merci d'avance pour votre aide.

    RépondreRépondre
    remi , le 19 novembre 2008 à 17:06
  •  

    Pour l'installation des drivers windows, je ne faisait pas vraiment comme indiqué dans le tuto.
    Car lorsque je faisait un clic droit sur l'imprimante, il me demandait d'installer les drivers.
    Donc là, j'ai mis non, et j'ai suivi la procédure.
    Et là, je rencontre le message d'erreur suivant :

    "impossible d'installer le pilote toshiba es452 PCL6, windows 2000 ou XP, Intel. Accès refusé.
    Pourtant, j'ai mis "chmod 777" sur le dossier "drivers"

    RépondreRépondre
    remi , le 19 novembre 2008 à 17:53
  •  

    @remi : la commande cupsadd me semble essentielle.

    RépondreRépondre
    pti-seb , le 19 novembre 2008 à 19:08
  •  

    Je veux bien, mais j'ai beau chercher, je n'y arrive pas.
    Il me met toujours "bash: cupsadd: command not found"

    Je suis sous fedora 9

    Merci

    RépondreRépondre
    remi , le 19 novembre 2008 à 19:54
  •  

    @remi : il faut être root pour utiliser cette commande.

    RépondreRépondre
    pti-seb , le 19 novembre 2008 à 20:30
  •  

    Je suis bien en root.

    Je vais continuer à chercher.
    Merci

    RépondreRépondre
    remi , le 19 novembre 2008 à 22:45
  •  

    Je viens de refaire le tuto du début, mais avec la distribution ubuntu server.
    Là, la commende "cupsadd -H localhost -U root -a" fonctionne.

    Mais j'ai toujours mon souci d'installer les drivers windows.
    “impossible d'installer le pilote toshiba es452 PCL6, windows 2000 ou XP, Intel. Accès refusé."

    RépondreRépondre
    remi , le 20 novembre 2008 à 18:01
  •  

    J'approche du but, mais j'ai un dernier soucis.

    J'ai mis les drivers windows.
    Quand je vais voir dans "/etc/samba/drivers", il m'a créé un dossier nommé "3"

    Je suis donc allé sur un PC en XP pro, et quajd clique sur l'imprimante partagé pour l'installer, il me dit que le serveur ne dispose pas des drivers.

    Pourtant, quand je vais sur le PC qui ma permit de mettre les drivers windows sur le serveur, il y a bien d'indiqué les drivers windows.

    Une petite idée ?

    Encore merci

    RépondreRépondre
    remi , le 20 novembre 2008 à 19:13
 

Ajouter un commentaire

actualité android apache apple astuce astuces bash bilboblog blog boot chrome clavier commande commandes conky date debian Desktop développement elementary exploit faille fedora firefox flash gimp gnome google graphique Graphisme hack hacking Hardware humour intel internet iphone jailbreak Jeux Kde kernel libre Linux log logiciels Logiciels Libres lucid lynx maemo mail maquette metasploit microsoft mobile mockup monitoring mozilla multi-touch musique mysql n900 nautilus nokia noyau openoffice open source password photos php Planet publicité redhat red hat rpm réseau screenshot script serveur serveurs shell sql ssh statistiques sysadmin system Sécurité thème tux-planet tv twitter ubuntu unity vidéo vidéos vlc voyage wallpaper windows wordpress yum