Implantation

Ce tutoriel développe la mise en place d'un serveur d'impression CUPS.
Ainsi que l'utilisation des imprimantes depuis des clients Linux et Window$ par l'intermédiaire de Samba.


Installation des packages

Sur le serveur :
cupsys cupsys-driver-gimpprint foomatic-bin foomatic-filters-ppds cups-pdf gs-esp cupsys-client openssl samba smbclient

Sur les clients :
libcupsys2-gnutls10



Configuration de CUPS

ATTENTION : si vous voulez configurer des transactions CUPS sécurisées (SSL) :
vous ne devez pas avoir Apache d'installé sur le serveur CUPS à cause du port 443 (https) partagé !
Sinon changez le port d'écoute de CUPS en 632 par exemple. Pour accéder à l'interface web, il suffira d'entrer l'adresse https://localhost:632
CUPS possède sont propre serveur HTTP, voir la doc sur votre serveur pour plus d'info : http://localhost:631/


Modifiez le fichier
/etc/cups/cupsd.conf :



#
# Sample configuration file for the Common UNIX Printing System (CUPS)
# scheduler.
#
# Copyright 1997-2005 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
# property of Easy Software Products and are protected by Federal
# copyright law. Distribution and use rights are outlined in the file
# "LICENSE.txt" which should have been included with this file. If
# this file is missing or damaged please contact Easy Software Products
# at:
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44141 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
# EMail: cups-info@cups.org
# WWW: http://www.cups.org
#
###########################################################
#
# This is the CUPS configuration file. If you are familiar with
# Apache or any of the other popular web servers, we've followed the
# same format. Any configuration variable used here has the same
# semantics as the corresponding variable in Apache. If we need
# different functionality then a different name is used to avoid
# confusion...
#


###########################################################

########
######## Server Identity
########

#
# ServerName:
# La directive ServerName indique le nom d'hôte qui doit être envoyé
# aux clients. En standard, le nom du serveur est le nom d'hôte.
#
# To set the default server used by clients, see the client.conf file.
#

ServerName srv7.alex.fr

#
# ServerAdmin:
# La directive ServerAdmin identifie l'adresse de courriel de
# l'administrateur du système. La valeur implicite est root@serveur,
# où server est le nom du serveur.
#

ServerAdmin root@alex.fr


########
######## Server Options
########

#
# AccessLog:
# La directive AccessLog donne le nom du fichier de suivi d'accès
# ("access log"). Si le chemin d'accès au fichier n'est pas absolu,
# il est considéré comme relatif au répertoire ServerRoot.
# Le fichier "access log" est stocké dans le format "log" habituel
# et peut aisément être utilisé par tout outil d'analyse d'accès "web"
# pour générer un rapport sur l'activité du serveur CUPS.
#
# Le nom du serveur peut être inclus dans le nom du fichier en
# utilisant %s dans le nom.
# AccessLog /var/log/cups/access_log-%s
#
# Le nom spécial "syslog" peut être utilisé pour envoyer les informations
# d'accès au fichier de suivi système au lieu d'un simple fichier texte.
# AccessLog syslog
#
# Le fichier de suivi d'accès implicite est /var/log/cups/access_log.
#

AccessLog /var/log/cups/access_log

#
# Classification:
# La directive Classification fixe le niveau de classification sur le
# serveur. Lorsque cette option est activée au moins une des pages de
# garde est forcée à ce niveau et l'information de classification est
# placée sur chaque page imprimée. La valeur implicite est de n'avoir
# aucun niveau de classification.
#
# The default is the empty string.
#
#Classification classified
#Classification confidential
#Classification secret
#Classification topsecret
#Classification unclassified

#
# ClassifyOverride:
# La directive ClassifyOverride indique si les utilisateurs peuvent
# outrepasser le niveau de classification du serveur ou non.
# Lorsque la classification du serveur est activée, les utilisateurs
# peuvent changer la classification en employant l'option job-sheets
# et peuvent choisir de n'imprimer qu'une seule page de garde de
# sécurité avant ou après le travail d'impression.
# Si l'option job-sheets est positionnée à la valeur none alors le
# niveau de classification implicite du serveur est utilisé.
#
# The default is off.
#

ClassifyOverride off

#
# DataDir:
# La directive DataDir fixe le répertoire à employer pour les fichiers de données.
# By default "/usr/share/cups".
#

DataDir /usr/share/cups

#
# DefaultCharset:
# La directive DefaultCharset définit le jeu de caractères à utiliser
# pour les connexions avec les clients. Le jeu de caractère implicite
# est le jeu utf-8 mais il est outrepassé par le jeu de caractères
# associé à la langue indiquée par le client ou par la directive
# DefaultLanguage.
#
# DefaultCharset utf-8
# DefaultCharset iso-8859-1
# DefaultCharset windows-1251
#

DefaultCharset notused

#
# DefaultLanguage:
# La directive DefaultLanguage définit le langage à utiliser pour les
# connexions avec les clients.
# Régler la langue règle également le jeu de caractères si un fichier
# de localisation existe pour celle-ci.
# La valeur implicite est "en" c'est-à-dire "anglais".
#

DefaultLanguage fr

#
# DocumentRoot:
# La directive DocumentRoot indique l'emplacement du contenu que le
# serveur HTTP de CUPS doit publier. Si un chemin absolu n'est pas
# indiqué, celui-ci est considéré comme relatif au répertoire ServerRoot.
# La valeur implicite est /usr/share/cups/doc-root.
#
# Les documents sont d'abord recherchés dans un sous-répertoire
# correspondant à la langue demandée par le client
# (par exemple /usr/share/cups/doc-root/fr/...) et ensuite directement
# dans le répertoire DocumentRoot.
# ainsi il est possible de localiser le contenu "web" en fournissant
# des sous-répertoires pour chaque langue nécessaire.
#

DocumentRoot /usr/share/cups/doc-root

#
# ErrorLog:
# La directive ErrorLog définit le nom du fichier de suivi d'erreurs
# ("error log").
# Si le nom de fichier n'est pas un chemin absolu, il est considéré
# comme un chemin relatif au répertoire ServerRoot.
# Le fichier standard est /var/log/cups/error_log.
#
# Le nom du serveur peut être inclus dans le nom du fichier en utilisant
# le nom %s. ErrorLog /var/log/cups/error_log-%s
# Le nom spécial "syslog" peut être utilisé pour envoyer les
# informations de suivi d'erreurs vers le fichier de suivi d'erreur
# système au lieu d'un fichier texte simple. ErrorLog syslog
#

ErrorLog /var/log/cups/error_log

#
# FileDevice: determines whether the scheduler will allow new printers
# to be added using device URIs of the form "file:/foo/bar". The default
# is not to allow file devices due to the potential security
# vulnerability and due to the fact that file devices do not
# support raw printing.
#

FileDevice No

#
# FontPath:
# La directive FontPath définit le chemin de recherche des polices de
# caractères à utiliser. La valeur implicite est /usr/share/cups/fonts.
#

FontPath /usr/share/cups/fonts

#
# LogLevel:
# La directive LogLevel indique la quantité d'informations à consigner
# dans le fichier ErrorLog . Les valeurs suivantes sont reconnues
# (chaque niveau inclut tout ce qui l'est dans les niveaux inférieurs):
#
# none - Ne consigne rien.
# emerg - Consigne les conditions d'urgence qui empêchent le serveur
# de fonctionner.
# alert - Consigne les alertes qui doivent être traitées immédiatement.
# crit - Consigne les erreurs critiques qui n'empêchent pas le serveur
# de fonctionner.
# error - Consigne les erreurs générales.
# warn - Consigne les erreurs et les avertissements.
# notice - Consigne les conditions d'erreurs temporaires.
# info - Consigne toutes les requêtes de modifications et de changement
# d'état (valeur implicite).
# debug - Consigne des informations basiques de débogage.
# debug2 - Consigne toutes les informations de débogage.
#

LogLevel info

#
# MaxLogSize:
# La directive MaxLogSize contrôle la taille maximum de chaque fichier
# de suivi ("log"). Dès qu'un fichier atteint ou dépasse la limite il
# est fermé ou renommé en filename.O. Cela vous permet de mettre en place
# automatiquement une rotation des fichiers de suivi.
# La taille implicite est de 1048576 octets (1Mo).
#
# Régler le maximum sur 0 désactive la rotation de fichier de suivi.
# MaxLogSize 0
# MaxLogSize 1048576
# MaxLogSize 1m
#

MaxLogSize 5m

#
# PageLog:
# La directive PageLog définit le nom du fichier "page log".
# Si le nom du fichier n'est pas absolu, il est considéré comme étant
# relatif au répertoire ServerRoot. Le fichier standard "page log"
# est /var/log/cups/page_log.
#
# Le nom du serveur peut être inclus dans le nom de fichier en
# utilisant le nom %s. PageLog /var/log/cups/page_log-%s
# Le nom spécial "syslog" peut être utilisé pour envoyer les
# informations de page vers le fichier de suivi système au lieu
# d'un simple fichier texte. PageLog syslog
#

PageLog /var/log/cups/page_log

#
# PreserveJobHistory:
# La directive PreserveJobHistory contrôle si l'historique des travaux
# complétés, annulés ou abandonnés est conservé sur disque ou non.
# Une valeur On (valeur implicite) conserve les informations concernant
# les travaux jusqu'à ce que l'administrateur les purge avec la
# commande cancel.
#
# Une valeur Off retire les informations concernant les travaux dès
# que ceux-ci sont complétés, annulés ou abandonnés.
#

PreserveJobHistory Off

#
# PreserveJobFiles:
# La directive PreserveJobFiles contrôle si les fichiers des documents
# complétés, annulés ou abandonnés sont stockés sur disque.
# La valeur On conserve les fichiers des travaux jusqu'à ce que
# l'administrateur les purge au moyen de la commande cancel.
# Les travaux peuvent être resoumis (réimprimés) jusqu'à ce qu'ils
# soient purgés.
#
# La valeur Off (valeur implicite) retire les fichiers des travaux
# dès ceux-ci sont complétés, annulés ou abandonnés.
#

PreserveJobFiles No

#
# AutoPurgeJobs:
# La directive AutoPurgeJobs indique si oui ou non il faut purger
# les travaux d'impression lorsqu'ils ne sont plus nécessaires au
# vu des quotas. Cet option n'a aucun effet si les quotas ne sont
# pas activés. La valeur implicite est No.
#

AutoPurgeJobs No

#
# MaxCopies: maximum number of copies that a user can request.
# Default is 100.
#

MaxCopies 100

#
# MaxJobs:
# La directive MaxJobs contrôle le nombre maximum de travaux
# d'impression qui sont conservés en mémoire. Dès que le nombre de
# travaux atteint la limite, le plus ancien travail complété est
# automatiquement purgé du système pour libérer de l'espace pour
# le nouveau travail. Si tous les travaux connus sont toujours en
# attente de traitement ou actifs, alors le nouveau travail sera rejeté.
#
# the value 0 is used for no limit.
#

MaxJobs 500

#
# MaxJobsPerPrinter:
# La directive MaxJobsPerPrinter contrôle le nombre maximum de travaux
# actifs qui sont autorisés pour chaque imprimante ou classe
# d'imprimantes. Dès que le nombre est atteint pour une imprimante
# ou une classe, les nouveaux travaux sont rejetés tant que l'un des
# travaux actifs n'est pas complété, arrêté, annulé ou abandonné.
# Régler la valeur à 0 pour aucune limite (valeur implicite).
#

#MaxJobsPerPrinter 0

#
# MaxJobsPerUser:
# La directive MaxJobsPerUser contrôle le nombre maximum de travaux
# d'impression qui sont autorisés pour chaque utilisateur. Dès qu'un
# utilsateur atteint le maximum autorisé, tout nouveau travail sera
# rejeté avant qu'un des travaux actifs soit complété, arrêté,
# annulé ou abandonné.
# Régler la valeur à 0 pour aucune limite (valeur implicite).
#

#MaxJobsPerUser 0

#
# MaxPrinterHistory: controls the maximum number of history collections
# in the printer-state-history attribute.
# Set to 0 to disable history data.
#

#MaxPrinterHistory 10

#
# Printcap:
# La directive Printcap contrôle si le fichier printcap est
# automatiquement généré et mis à jour ou non avec une liste des
# imprimantes disponibles. Si la directive est utilisée sans valeur,
# alors aucun fichier printcap ne sera généré. La valeur implicite
# est de générer un fichier nommé /etc/printcap.
#
# Quand un nom de fichier est indiqué (par exemple /etc/printcap ),
# le fichier printcap est écrit dès qu'une imprimante est ajoutée
# ou supprimée. Le fichier printcap peut alors être utilisé par les
# applications dont l'utilisation du fichier printcap comme
# référence des imprimantes disponibles est codée en dur.
#

Printcap /var/run/cups/printcap

#
# PrintcapFormat:
# La directive PrintcapFormat contrôle le format de sortie du
# fichier printcap. Le comportement implicite est de générer un
# fichier printcap de type BSD.
#

PrintcapFormat BSD
#PrintcapFormat Solaris

#
# PrintcapGUI:
# La directive PrintcapGUI indique le programme à utiliser pour
# afficher le panneau d'options à partir d'une application IRIX
# qui utiliser l'API d'impression Impressario. Le programme
# implicite est le programme graphique "glpoptions" d'ESP Print Pro.
#
# Le programme doit accepter l'option -d pour indiquer l'imprimante
# et l'option -o pour indiquer une ou plusieurs options. Après avoir
# autorisé l'utilisateur à sélectionner/changer les options,
# le programme doit écrire la liste des options d'impression sans
# le -o sur la sortie standard.
#

#PrintcapGUI /usr/bin/glpoptions

#
# RequestRoot:
# La directive RequestRoot définit le répertoire pour les requêtes
# entrantes IPP et les formulaires HTML. Si un chemin absolu n'est
# pas fourni alors il est considéré comme relatif au répertoire
# ServerRoot. Le répertoire implicite est /var/spool/cups.
#

RequestRoot /var/spool/cups

#
# RemoteRoot:
# La directive RemoteRoot fixe le nom d'utilisateur à utiliser pour
# les requêtes root non authentifiées depuis des hôtes distants.
# Le nom d'utilisateur standard est remroot. Régler RemoteRoot sur
# root désactive effectivement ce mécanisme de sécurité.
#
# RemoteRoot root
# By default "remroot".
#

#RemoteRoot remroot

#
# ServerBin:
# La directive ServerBin définit le répertoire contenant les
# fichiers exécutables du serveur. Si un chemin absolu n'est pas
# indiqué, il est considéré comme relatif au répertoire ServerRoot.
# Le répertoire implicite est /usr/lib/cups.
#

ServerBin /usr/lib/cups

#
# ServerRoot:
# La directive ServerRoot indique un chemin absolu pour les
# fichiers de configuration et d'état du serveur. Il est également
# utilisé pour interpréter les chemins relatifs présents dans le
# fichier cupsd.conf file. Le répertoire standard est /etc/cups.
#

ServerRoot /etc/cups

#
# ServerTokens: specifies what information in provided in the Server
# header of HTTP responses. The default is Minor.
#
# ServerTokens None
# ServerTokens ProductOnly       CUPS
# ServerTokens Major             CUPS/1
# ServerTokens Minor             CUPS/1.1
# ServerTokens Minimal           CUPS/1.1.23
# ServerTokens OS                CUPS/1.1.23 (uname)
# ServerTokens Full              CUPS/1.1.23 (uname) IPP/1.1
#

#ServerTokens Minor


########
######## Fax Support
########

#
# FaxRetryLimit: the number of times a fax job is retried.
# The default is 5 times.
#

#FaxRetryLimit 5

#
# FaxRetryInterval: the number of seconds between fax job retries.
# The default is 300 seconds/5 minutes.
#

#FaxRetryInterval 300


########
######## Encryption Support
########

#
# ServerCertificate:
# La directive ServerCertificate définit l'emplacement du fichier
# de certificat SSL utilisé par le serveur lors de la négociation
# des connexions encryptées. Le certificat ne doit pas être encrypté
# (protégé par un mot de passe) car l'ordonnanceur fonctionne
# normalement en arrière-plan et et ne sera pas en mesure de
# demander un mot de passe.
# Le fichier standard de certificat est /etc/cups/ssl/server.crt
#

ServerCertificate /etc/cups/ssl/server.crt

#
# ServerKey:
# La directive ServerKey indique l'emplacement du fichier de clé
# privée SSL utilisé par le serveur pour négocier les connexions
# encryptées. Le fichier standard de clé est /etc/cups/ssl/server.crt
#

ServerKey /etc/cups/ssl/server.key


########
######## Filter Options
########

#
# User/Group:
# La directive Group définit le groupe UNIX sous l'identité duquel
# les programmes CGI et de filtrage fonctionnent. Le groupe
# implicite est sys, system, ou root selon l'OS.
#
# La directive User indique l'utilisateur UNIX sous l'identité
# duquel les programmes CGI et les filtres doivent fonctionner.
# La valeur implicite est lp.
#
# Note: the server must be run initially as root to support the
# default IPP port of 631. It changes users whenever an external
# program is run, or if the RunAsUser directive is specified...
#

User lp
Group lpadmin

#
# RIPCache:
# La directive RIPCache définit la quantité de mémoire utilisée
# par les filtres RIP ("Raster Images Processor") tels que
# imagetoraster et pstoraster.
# La taille peut être suffixée par "k" pour kilo-octets,
# "m" pour méga-octets, "g" pour giga-octets ou "t" pour tiles
# (1 tile = 256x256 pixels.)
# La taille implicite est de "8m", ou 8 méga-octets.
#

RIPCache 8m

#
# TempDir:
# La directive TempDir indique un chemin absolu pour le répertoire
# à employer pour les fichiers temporaires. Le répertoire standard
# est /var/tmp.
#
# Les répertoires temporaires doivent être inscriptibles pour tous
# et devraient avoir le "sticky" bit activé de sorte que les
# utilisateurs ne puissent pas supprimer les fichiers temporaires
# de filtres.
# Les commandes suivantes créerons un répertoire temporaire approprié
# appelé /foo/bar/tmp:
# mkdir /foo/bar/tmp ENTREE
# chmod a+rwxt /foo/bar/tmp ENTREE
#

TempDir /var/spool/cups/tmp

#
# FilterLimit:
# La directive FilterLimit définit le coût maximal de tous les filtres
# appliqués au travaux en cours de traitement. Elle peut être utilisée
# pour limiter le nombre de programmes de filtres qui son exécutés
# dans un serveur pour minimiser les problèmes de ressources disque,
# mémoire ou CPU. Une limite de 0 désactive la limitation des filtres.
#
# Le coût moyen d'une impression vers une imprimante non-PostScript
# nécessite une limitation# de filtre aux alentours de 200.
# Une imprimante PostScript nécessite une limite d'environ la
# moitié (100). Positionner la limite en dessous de ces seuils va
# effectivement limiter l'ordonnanceur à l'impression d'un travail
# à la fois. La valeur implicite est 0.
#

FilterLimit 1000


########
######## Network Options
########

#
# Ports/addresses that we listen to. The default port 631 is reserved
# for the Internet Printing Protocol (IPP) and is what we use here.
#
# La directive Port indique un port sur lequel CUPS sera en attente
# de connexions. Plusieurs lignes de Port peuvent être indiquées pour
# écouter sur plusieurs ports.
#
# Port 80
# Port 631
# Listen hostname
# Listen hostname:80
# Listen hostname:631
# Listen 1.2.3.4
# Listen 1.2.3.4:631
#
# NOTE: Unfortunately, most web browsers don't support TLS or HTTP
# Upgrades for encryption. If you want to support web-based
# encryption you'll probably need to listen on port 443
# (the "https" port...)
#
# NOTE 2: In order for the command-line and web interfaces to work, you
# must have at least one Port or Listen line that allows access from the
# local loopback address (localhost).
#

#Port 80
#Port 443
Port 631

#
# La directive
SSLPort indique le port écouté pour les connexions
# sécurisées. Plusieurs lignes
SSLPort peuvent être indiquées
# pour écouter les connexions sur plusieurs ports.

SSLPort 443

#
# HostNameLookups:
# La directive HostNameLookups indique si CUPS doit ou non
# rechercher le nom d'hôte des clients qui se connectent.
# La clause Double force CUPS à vérifier que le nom d'hôte
# trouvé à partir de l'adresse correspond bien à l'une des adresses
# retournées pour ce nom d'hôte. Les recherches Double empêchent
# également que des clients ayant des adresses non enregistrées
# ne se connectent au serveur.
# La valeur implicite est Off pour éviter tout problème potentiel
# de performance du serveur du fait des résolutions de nom.
# Positionnez cette directive à la valeur On ou Double
# uniquement si nécessaire.
#

HostNameLookups Off

#
# KeepAlive:
# La directive KeepAlive contrôle la prise en charge ou non des
# connexions HTTP persitantes. La valeur implicite est On .
# Les clients HTTP/1.1 prennent automatiquement en charge les
# connexions persistantes, tandis que clients HTTP/1.0 doivent
# spécifiquement les demander en utiliser l'attribut
# Keep-Alive attribute dans le champ Connection: de chaque requête.
#

KeepAlive On

#
# KeepAliveTimeout:
# La directive KeepAliveTimeout contrôle combien de temps une
# connexion HTTP persistante restera ouverte après la dernière requête.
# La valeur implicite est de 60 secondes.
#

KeepAliveTimeout 60

#
# MaxClients:
# La directive MaxClients contrôle le nombre maximum de clients
# simultanés qui seront autorisés par le serveur. La valeur
# implicite ("par défaut") est de 100 clients.
#

MaxClients 100

#
# MaxClientsPerHost:
# La directive MaxClientsPerHost contrôle le nombre maximum de
# clients connectés silmutanéments par Host.
# Defaults to 10 or 1/10th of the MaxClients setting, whichever
# is larger. A value of 0 specifies the automatic(10 or 1/10th)setting.
#

MaxClientsPerHost 0

#
# MaxRequestSize:
# La directive MaxRequestSize contrôle la taille maximum des fichiers
# d'impression, des requêtes IPP, et des données des formulaires
# HTML contenus dans les requêtes HTTP POST. La valeur implicite
# est 0, ce qui désactive cette vérification de limite.
# MaxRequestSize 0
#

#MaxRequestSize 10m

#
# Timeout:
# La directive Timeout définit le délai à attendre avant qu'une
# requête HTTP ou IPP active ne soit hors délai.
# La valeur implicite est de 300 secondes.
#

Timeout 300


########
######## Browsing Options
########

#
# Browsing:
# La directive Browsing contrôle l'activation ou non de
# l'exploration réseau des imprimantes. La valeur implicite est On .
#

Browsing On

#
# BrowseProtocols:
# La directive BrowseProtocols indique les protocoles à employer
# pour collecter et distribuer les informations sur les imprimantes
# partagées sur le réseau local. Le protocole implicite est CUPS,
# c'est un protocole basé sur la diffusion réseau ("broadcast").
#
# all - Use all supported protocols.
# cups - Use the CUPS browse protocol.
# slp - Use the SLPv2 protocol.
#
# NOTE: If you choose to use SLPv2, it is *strongly* recommended that
# you have at least one SLP Directory Agent (DA) on your
# network. Otherwise, browse updates can take several seconds,
# during which the scheduler will not response to client
# requests.
#

BrowseProtocols cups

#
# BrowseAddress:
# La directive BrowseAddress indique une adresse à laquelle il faut
# envoyer les informations d'exploration. Plusieurs directives
# BrowseAddress peuvent être indiquées pour envoyer les informations
# d'exploration à différents systèmes ou réseaux.
# La valeur implicite de l'adresse est 255.255.255.255:631 ce qui
# diffusera les informations à tous les réseaux auxquels le serveur
# est connecté.
#
# Note: HP-UX does not properly handle broadcast unless you have a
# Class A, B, C, or D netmask (i.e. no CIDR support).
#
# Note: Using the "global" broadcast address (255.255.255.255) will
# activate a Linux demand-dial link with the default configuration.
# If you have a LAN as well as the dial-up link, use the LAN's
# broadcast address.
#
# The @LOCAL address broadcasts to all non point-to-point interfaces.
# For example, if you have a LAN and a dial-up link, @LOCAL would
# send printer updates to the LAN but not to the dial-up link.
# Similarly, the @IF(name) address sends to the named network
# interface, e.g. @IF(eth0) under Linux. Interfaces are refreshed
# automatically (no more than once every 60 seconds), so they can
# be used on dynamically-configured interfaces, e.g. PPP, 802.11, etc.
#

#BrowseAddress x.y.z.255
#BrowseAddress x.y.255.255
#BrowseAddress x.255.255.255
#BrowseAddress 255.255.255.255
BrowseAddress @LOCAL
#BrowseAddress @IF(name)

#
# BrowseShortNames:
# La directive BrowseShortNames indique s'il faut ou non utiliser
# les noms courts pour les imprimantes à distance. Les noms courts
# sont simplement composés du nom de l'imprimante, sans celui du
# serveur ("imprimante"). Si le système détecte plus d'une imprimante
# à distance portant le même nom, les imprimantes seront affichées
# avec les noms longs ("imprimante@erveur1", "imprimante@erveur2")
#
# Enabled by default.
#

BrowseShortNames Yes

#
# BrowseAllow:
# La directive BrowseAllow indique un masque réseau dont on accepte de
# recevoir des paquets. Le comportement implicite est
# d'accepter des paquets de n'importe quel hôte.
#
# Le contrôle sur la base du nom d'hôte et de domaine impose que
# vous activiez la directive HostNameLookups.
#
# Le contrôle sur la base de l'adresse IP prend en charge les
# correspondances exactes, les adresses partielles qui correspondent
# à des réseaux dont le masque est 255.0.0.0, 255.255.0.0, et
# 255.255.255.0, ou des adresses réseau utilisant le masque indiqué.
#
# BrowseDeny:
# La directive BrowseDeny indique que l'on refuse les paquets
# d'un masque réseau. Le comportement implicite
# est de ne refuser aucun paquet.
#
# Both "BrowseAllow" and "BrowseDeny" accept the following notations
# for addresses:
#
# All
# None
# *.domain.com
# .domain.com
# host.domain.com
# nnn.*
# nnn.nnn.*
# nnn.nnn.nnn.*
# nnn.nnn.nnn.nnn
# nnn.nnn.nnn.nnn/mm
# nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
# @LOCAL
# @IF(name)
#
# The hostname/domainname restrictions only work if you have
# turned hostname lookups on!
#

#BrowseDeny address
BrowseDeny All

#
#BrowseAllow address
#BrowseAllow none
#BrowseAllow 192.0.2
#BrowseAllow *.domain.com
BrowseAllow 192.168.0.0/24
BrowseAllow 127.0.0.1
BrowseAllow @LOCAL


#
# BrowseInterval:
# La directive BrowseInterval indique le délai maximum entre deux
# mises à jour de l'exploration. Le fait d'indiquer une valeur
# de 0 interdit de diffuser des mises à jour mais autorise
# néanmoins un serveur à recevoir des mises à jour en provenance
# d'autres hôtes.
# La valeur BrowseInterval devrait toujours être inférieure à la
# valeur BrowseTimeout. Sinon des imprimantes et des classes
# pourraient disparaître des système clients entre les mises à jour.
#

BrowseInterval 30

#
# BrowseOrder:
# La directive BrowseOrder indique l'ordre de traitement accord/refus.
# L'ordre implicite est deny,allow:
# allow,deny - Les paquets d'exploration sont acceptés à moins qu'ils
# ne soient explicitement refusés.
# deny,allow - Les paquets d'exploration sont rejetés à moins qu'ils
# ne soient explicitement acceptés.
#

#BrowseOrder allow,deny
BrowseOrder deny,allow

#
# BrowsePoll:
# La directive BrowsePoll collecte la liste des imprimantes disponibles
# sur un serveur une fois toutes les BrowseInterval secondes.
# Plusieurs directives BrowsePoll peuvent être indiquées pour surveiller
# plusieurs serveurs. Si BrowseInterval est mis à 0 alors le serveur est
# surveillé une fois toutes les 30 secondes.
#

#BrowsePoll secondprintsrv.alex.fr:443

#
# BrowsePort:
# La directive BrowsePort indique un numéro de port UDP à employer
# pour les échanges de paquets d'exploration.
# La valeur implicite est 631.
#

#BrowsePort 631
BrowsePort 443

#
# BrowseRelay:
# la directive indique des adresses source et destination pour
# relayer les informations d'exploration en provenance d'un hôte
# ou d'un réseau vers un autre. Plusieurs directives BrowseRelay
# peuvent être indiquées si nécessaire.
#
# BrowseRelay est généralement utilisé sur des systèmes qui assurent
# la passerelle entre des réseaux multiples au moyen d'une ou
# plusieurs interfaces réseau. Elle peut également être utilisée
# pour relayer des informations sur les imprimantes provenant de
# serveurs surveillés, au moyen de la ligne:
# BrowseRelay 127.0.0.1 255.255.255.255
# Cela fournit un accès effectif aux imprimantes d'un WAN pour
# tous les clients d'un LAN.
#

#BrowseRelay source-address destination-address
#BrowseRelay @IF(src) @IF(dst)

#
# BrowseTimeout:
# La directive BrowseTimeout fixe la durée de vie des informations
# reçues sous forme de paquets d'exploration et concernant les
# imprimantese et les classes. Une fois que les informations
# concernant une imprimante ou une classe dépassent ce délai,
# elles sont retirées de la liste des destinations disponibles.
#
# La valeur BrowseTimeout devrait toujours être supérieure à la
# valeur BrowseInterval.
# Sinon des imprimantes et des classes pourraient disparaîtres
# des systèmes clients entre les mises à jour.
#

BrowseTimeout 300

#
# ImplicitClasses:
# La directive ImplicitClasses contrôle si les classes implicites
# sont créées sur la base des imprimantes et classes disponibles
# sur le réseau. La valeur implicite est On mais est automatiquement
# positionnée sur Off si Browsing est à la valeur Off.
#
# Printer classes can be specified explicitly in the classes.conf
# file, implicitly based upon the printers available on the LAN, or both.
#
# When ImplicitClasses is On, printers on the LAN with the same name
# (e.g. Acme-LaserPrint-1000) will be put into a class with the same
# name. This allows you to setup multiple redundant queues on a LAN
# without a lot of administrative difficulties. If a user sends a
# job to Acme-LaserPrint-1000, the job will go to the first available
# queue.
#

ImplicitClasses On

#
# ImplicitAnyClasses:
# La directive ImplicitAnyClasses contrôle si oui ou non les classes
# implicites pour les imprimantes locales et à distance sont crées
# avec le nom AnyPrinter. La valeur implicite est Off.
# ImplicitClasses doit être activée pour que cette directive ait
# un quelconque effet.
#
# When ImplicitAnyClasses is On and a local queue of the same name
# exists, e.g. "printer", "printer@server1", "printer@server1", then
# an implicit class called "Anyprinter" is created instead.
#
# When ImplicitAnyClasses is Off, implicit classes are not created
# when there is a local queue of the same name.
#

ImplicitAnyCLasses Off

#
# HideImplicitMembers:
# La directive HideImplicitMembers contrôle l'appartenance ou non
# d'imprimantes individuelles aux classes implicites qui sont
# montrées à l'utilisateur. La valeur standard est No.
# ImplicitClasses doit être activée pour que cette directive ait
# un quelconque effet.
#

HideImplicitMembers On


########
######## Security Options
########

#
# SystemGroup:
# La directive SystemGroup indique le groupe système d'aministration
# pour l'authentification de type System.
#
# The default varies depending on the operating system, but
# will be "sys", "system", or "root" (checked for in that order.)
#

SystemGroup lpadmin

#
# RootCertDuration: How frequently the root certificate is regenerated.
# Defaults to 300 seconds.
#

RootCertDuration 300

#
# Access permissions for each directory served by the scheduler.
# Locations are relative to DocumentRoot...
#
# AuthType: the authorization to use:
#
# None - Perform no authentication
# Basic - Perform authentication using the HTTP Basic method.
# Digest - Perform authentication using the HTTP Digest method.
#
# (Note: local certificate authentication can be substituted by
# the client for Basic or Digest when connecting to the
# localhost interface)
#
# AuthClass: the authorization class; currently only "Anonymous", "User",
# "System" (valid user belonging to group SystemGroup), and "Group"
# (valid user belonging to the specified group) are supported.
#
# AuthGroupName: the group name for "Group" authorization.
#
# Order: the order of Allow/Deny processing.
#
# Allow: allows access from the specified hostname, domain, IP address,
# network, or interface.
#
# Deny: denies access from the specified hostname, domain, IP address,
# network, or interface.
#
# Both "Allow" and "Deny" accept the following notations for addresses:
#
# All
# None
# *.domain.com
# .domain.com
# host.domain.com
# nnn.*
# nnn.nnn.*
# nnn.nnn.nnn.*
# nnn.nnn.nnn.nnn
# nnn.nnn.nnn.nnn/mm
# nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
# @LOCAL
# @IF(name)
#
# The host and domain address require that you enable hostname lookups
# with "HostNameLookups On" above.
#
# The @LOCAL address allows or denies from all non point-to-point
# interfaces. For example, if you have a LAN and a dial-up link,
# @LOCAL could allow connections from the LAN but not from the dial-up
# link. Similarly, the @IF(name) address allows or denies from the
# named network interface, e.g. @IF(eth0) under Linux. Interfaces are
# refreshed automatically (no more than once every 60 seconds), so
# they can be used on dynamically-configured interfaces, e.g. PPP,
# 802.11, etc.
#
# Encryption: whether or not to use encryption; this depends on having
# the OpenSSL library linked into the CUPS library and scheduler.
#
# Possible values:
#
# Always - Always use encryption (SSL)
# Never - Never use encryption
# Required - Use TLS encryption upgrade
# IfRequested - Use encryption if the server requests it
#
# The default value is "IfRequested".
#

<Location />
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
Allow From @LOCAL
</Location>



#<Location /classes>
#
# You may wish to limit access to printers and classes, either with
# Allow and Deny lines, or by requiring a username and password.
#
## Authorise l'accés à /classes sur la boucle locale et depuis
# le serveur srv1.alex.fr par exemple mais pas pour le réseau local !
#Order Deny,Allow
#Deny From All
#Allow From 127.0.0.1
#Allow From srv1.alex.fr
#</Location>


#<Location /classes/name>
#
# You may wish to limit access to printers and classes, either
# with Allow and Deny lines, or by requiring a username and password.
#
#</Location>


<Location /jobs>
#
# Authorise l'accés aux /jobs depuis 127.0.0.1 et @LOCAL puisqu'il
# est l'héritier de <Location />
#
# You may wish to limit access to job operations, either with Allow
# and Deny lines, or by requiring a username and password.
#
AuthType Basic
AuthClass User
</Location>


#<Location /printers>
#
# You may wish to limit access to printers and classes, either with Allow
# and Deny lines, or by requiring a username and password.
#
## Authorise l'accés à /printers sur la boucle locale et
# le serveur srv1.alex.fr par exemple mais pas pour le réseau local !
#Order Deny,Allow
#Deny From All
#Allow From 127.0.0.1
#Allow From srv1.alex.fr
#</Location>


#<Location /printers/name>
#
# You may wish to limit access to printers and classes, either with Allow
# and Deny lines, or by requiring a username and password.
#
#
# Anonymous access (default)
#AuthType None
#
# Require a username and password (Basic authentication)
#AuthType Basic
#AuthClass User
#
# Require a username and password (Digest/MD5 authentication)
#AuthType Digest
#AuthClass User


## Restrict access to local domain
#Order Deny,Allow
#Deny From All
#Allow From .mydomain.com
#</Location>


<Location /admin>
#
# You definitely will want to limit access to the
# administration functions.
# The default configuration requires a local connection from a user who
# is a member of the system group to do any admin tasks. You can change
# the group name using the SystemGroup directive.
#

#AuthType Basic
AuthType Digest
AuthClass System

## Restrict access to local domain
Order Deny,Allow
Deny From All
# Authorise l'administration CUPS par interface Web depuis la
# boucle locale et depuis le serveur srv1.alex.fr par exemple.
# Mais refuse les autres machine du réseau local.

Allow From 127.0.0.1
Allow From srv1.alex.fr
Encryption Required
</Location>


#
# End of cupsd.conf
#



Configuration du mot de passe Digest/MD5 pour l'Admin CUPS

Ajoutez un utilisateur (existant ou non sur le serveur)
Le mot de passe doit faire 6 caractères et contenir au moins 1 chiffre.

srv7:~# lppasswd -a printadmin
Enter password: my3password
Enter password again: my3password
srv7:~#


Génération du certificat et de la clef SSL pour CUPS

Créez un répertoire /etc/cups/ssl/ et copiez le fichier /etc/ssl/openssl.cnf vers /etc/cups/ssl/openssl-cups.cnf


Tapez ces commandes pour générer votre clef et certificat SSL :

srv7:~# cd /etc/cups/ssl/
srv7:/etc/cups/ssl# openssl req -new -x509 -config /etc/cups/ssl/openssl-cups.cnf -keyout /etc/cups/ssl/server.key -out /etc/cups/ssl/server.crt -days 365 -nodes


L'option -nodes permet de ne pas crypter le certificat et la clef SSL.
sinon CUPS ne sera pas capable de les charger.

Changez les droits de ces fichiers :

srv7:/etc/cups/ssl# chmod 600 /etc/cups/ssl/server.*


Relancez le serveur CUPS
srv7:/etc/cups/ssl# /etc/init.d/cupsys restart


Attribution des IP pour vos imprimantes réseau

Trois méthodes sont décrites dans l'aide :
(https://localhost/sam.html#COMMON_NETWORK)


La méthode la plus simple pour installer l'adresse IP d'un matériel réseau est d'utiliser la commande
arp. Elle envoie un paquet ARP ("Address Resolution Protocol") à l'adresse MAC indiquée tout en lui indiquant son adresse IP :

Sinon vous pouvez saisir dans votre serveur DHCP (dhcpd.conf) les coordonnées de vos imprimantes puisque leur adresse MAC est connue :

host laserjet20 {
hardware ethernet 08:00:F9:00:12:3D;
fixed-address 192.168.0.20;
option host-name "laserjet20.alex.fr";
}


Connexion et Administration du serveur CUPS

Tapez l'adresse suivante dans votre navigateur : https://localhost/ ou https://localhost:632 si vous avez changez le port sécurisé.
Vous arrivez sur la page principale qui vous propose différents menus.
Selon les actions que vous allez exécuter, le mot de passe "printadmin" vous sera demandé.

Cliquez sur
Administration des imprimantes du serveur CUPS :



Cliquez sur Administrer imprimantes


Cliquez sur
Ajouter imprimante pour ajouter une nouvelle imprimante.




Saisissez les informations selon la technologie de votre imprimante



Selon le modèle d'imprimante adaptez l'URI (https://localhost/sam.html#10_3)
Il y a plusieurs formes d'URI selon le périphérique (HP, Epson, Lexmark ...)



Choisissez le type de Pilote



Choisissez le modèle d'imprimante (s'il n'est pas dans la liste voir sur le site CUPS pour ajouter des drivers ou choisissez un modèle similaire)




Rejeter travaux permet de mettre hors service une imprimante.


Modifiez le fichier
/etc/services sur chaque clients ainsi que sur le serveur CUPS, pour remplacer le port du service "ipp" (impression) qui est par défaut 631 (non sécurisé) par 443 (https) ou 632 :
...
ipp          443/tcp     # Internet Printing Protocol
ipp          443/udp
...



Configuration des clients Linux pour utiliser CUPS

Modifiez le fichier /etc/cups/client.conf sur chaque clients Linux, ainsi que sur le serveur CUPS :

#
# ServerName:
# le nom de votre serveur CUPS.
#

ServerName srv7.alex.fr

#
# Encryption:
# Pour utiliser ou non encryption SSL, les valeurs possible :
#
# Always - Always use encryption (SSL)
# Never - Never use encryption
# Required - Use TLS encryption upgrade
# IfRequested - Use encryption if the server requests it
#
# Par defaut la valeur est "IfRequested".
# Vous pouvez régler ce parametre dans la variable
# d'environment CUPS_ENCRYPTION
#

Encryption Always

#
# Indique que les requetes doivent etre faites sur le port 443 ou 632 ...
#

SSLPort 443


Configuration de Samba pour les clients Window$

1er Solution
: Vous utilisez OpenLDAP pour authentifier l'accès à votre serveur d'impression Samba => CUPS

Il faut alors mapper les modules d'authentification Posix avec LDAP :
Se reporter au chapitre "
Mappage de l'annuaire LDAP avec les modules d'authentification Posix" du tutoriel "Authentification des utilisateurs avec OpenLDAP" pour realiser cette opération.
Appliquez une configuration client OpenLDAP pour votre machine CUPS/Samba


2em Solution : Vous utilisez une authentification locale pour accéder à votre serveur d'impression Samba => CUPS


Modifiez le fichier /etc/samba/smb.conf :


Configuration avec la 1er solution authentification LDAP :

#================== Global Settings ===================
[global]

# Server Naming Options:
#
# workgroup = NT-Domain-Name or Workgroup-Name

workgroup = ALEX

# netbios name, but defaults to your hostname.

netbios name = PRINT-LINUX

# server string is the equivalent of the NT Description field

server string = Samba Server %v

# Security :
#
# On demande une authentification pour se connecter au serveur.

security = user

encrypt passwords = yes

# LDAP configuration for Domain Controlling:
# Lancez cette commande pour que Samba puisse lire et écrire
# dans l'annuaire : smbpasswd -w mypassword


ldap admin dn = "cn=Manager,dc=alex,dc=fr"
ldap suffix = dc=alex,dc=fr
ldap passwd sync = yes

ldap user suffix = ou=People
ldap group suffix = ou=Group
ldap machine suffix = ou=People
ldap idmap suffix = ou=People,dc=alex,dc=fr

# Nous indiquons les noms FQDN des deux serveurs OpenLDAP, car
# la vérification du certificat risque d'échouer s'il y a une
# adresse IP à la place.
# La connexion à l'annuaire se fera par ldaps, car le mot de passe
# du Manager OpenLDAP circule en clair lors d'une requête standard.
# Reportez vous au chapitre "
SSL/TLS" pour mettre en place ldaps.
passdb backend = ldapsam:"ldaps://srv2.alex.fr ldaps://srv6.alex.fr"
idmap backend = ldapsam:"ldaps://srv2.alex.fr ldaps://srv6.alex.fr"
# Si malgré tout vous souhaitez utiliser ldap non sécurisé :
# passdb backend = ldapsam:"ldap://srv2.alex.fr ldap://srv6.alex.fr"
# idmap backend = ldapsam:"ldap://srv2.alex.fr ldap://srv6.alex.fr"

# On active SSL (option par défaut)
ldap ssl = on


# Printing Options:
# On charge les imprimantes

load printers = yes

# Définition du style d'impression

printing = cups
printcap = cups

# Définit les droits d'administration (@group)

printer admin = root, @lpadmin
show add printer wizard = yes

# Logging Options:

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

# Put a capping on the size of the log files (in Kb).

max log size = 5

# Security and Domain Membership Options:
#
# hosts allow = 192.168.1. 192.168.2. 127. EXCEPT 192.168.2.1
hosts allow = 127.0.0.1 192.168.0.0/24
hosts deny = 0.0.0.0/0

interfaces = eth* lo
bind interfaces only = yes

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

dns proxy = no

#================== Print Definitions ==================

[printers]

comment = Spool d'impression
path = /tmp
browseable = no
public = no
writable = no
printable = yes
create mode = 0700

[print$]

comment = Pilotes d'imprimantes
path = /var/lib/samba/printers
browseable = yes
guest ok = no
read only = yes
write list = root, @lpadmin


Configuration avec la 2em solution authentification locale :

#================== Global Settings ===================

[global]

# Server Naming Options:
#
# workgroup = NT-Domain-Name or Workgroup-Name

workgroup = ALEX

# netbios name, but defaults to your hostname

netbios name = PRINT-LINUX

# server string is the equivalent of the NT Description field

server string = Samba Server %v

# Security :
#
# On demande une authentification pour se connecter au serveur.

security = user


encrypt passwords = yes
passdb backend = tdbsam guest

# Printing Options:
# On charge les imprimantes

load printers = yes

# Définition du style d'impression

printing = cups
printcap = cups

# Définit les droits d'administration (@group)

printer admin = root, @lpadmin
show add printer wizard = yes

# Logging Options:

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

# Put a capping on the size of the log files (in Kb).

max log size = 5

# Security and Domain Membership Options:
#
# hosts allow = 192.168.1. 192.168.2. 127. EXCEPT 192.168.2.1
hosts allow = 127.0.0.1 192.168.0.0/24
hosts deny = 0.0.0.0/0

interfaces = eth* lo
bind interfaces only = yes

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

dns proxy = no

#================== Print Definitions ==================

[printers]
comment = Spool d'impression
path = /tmp
browseable = no
public = no
writable = no
printable = yes
create mode = 0700

[print$]
comment = Pilotes d'imprimantes
path = /var/lib/samba/printers
browseable = yes
guest ok = no
read only = yes
write list = root, @lpadmin



Installation des pilotes d'imprimantes pour les workstation$

La section [print$] permet d'indiquer ou son stockés les drivers de vos imprimantes.
Il y a plusieurs méthodes pour les installer (voir l'aide Samba en PDF)

Assurez-vous que le répertoire indiqué dans le partage Samba [print$] est
accessible en écriture aux utilisateurs indiqués par la directive write list :


srv7:~# chgrp -R lpadmin /var/lib/samba/printers/
srv7:~# chmod -R g+w /var/lib/samba/printers/

Assurez-vous également que chaque utilisateurs de la liste
write list possède un mot de passe Samba en utilisant la commande smbpasswd sinon vous ne pourrez pas vous authentifier.

Les pilotes de vos imprimantes seront répartis dans les sous répertoires suivants. Ils correspondent chacun à une architecture. Contenu du répertoire
/var/lib/samba/printers/ :

W32X86 pour winNT x86
WIN40 pour win95/98
W32ALPHA pour win NT alpha_AXP
W32MIPS pour win NT R4000
W32PPC pour win NT powerPC



Pour exporter les pilotes d'imprimantes, vous disposez de 2 méthodes :

- A) L'utilitaire cupsaddsmb fournit dans le package cupsys-client, qui réalise automatiquement l'ajout des pilotes CUPS dans Samba.

- B) Les commandes Samba qui ajoutent les pilotes Windows fournis dans le CD d'installation de votre imprimante.


A) Méthode cupsaddsmb

Pour les versions de Windows 2000 et supérieur :

  1. vous devez télécharger les pilotes d'imprimantes PostScript CUPS (cups-windows)

  2. récupérer les pilotes PostScript Microsoft :

Installez sur un poste Windows XP n'importe quelle imprimante réseau en utilisant les pilotes Génériques MS Publisher Color Printer.




Copiez les fichiers PSCRIPT.HLP, PSCRIPT.NTF, PSCRIPT5.DLL et PS5UI.DLL situés dans le répertoire C:\WINDOWS\system32\spool\drivers\w32x86\3\ vers /usr/share/cups/drivers/ de votre serveur.
Renommez-les en minuscule, car cupsaddsmb est sensible à la case !


Pour les versions antérieur à Windows 2000 :
il faut télécharger uniquement les pilotes
PostScript Adobe (
winstfre.exe) et les placer dans /usr/share/cups/drivers/ de votre serveur.


NOTE : Nous traiterons, dans ce qui suit, uniquement les postes Windows 2000 et XP.
Convertissez le package .RPM téléchargé sur le site de CUPS en .DEB avec la commande alien et installez-le.


srv7:~# ls /usr/share/cups/drivers/
cups6.inf cups6.ini cupsps6.dll cupsui6.dll ps5ui.dll pscript5.dll pscript.hlp pscript.ntf

Pour lister les imprimantes CUPS détectées par Samba, utilisez la commande :
srv7:~# rpcclient PRINT-LINUX -N -U'root%mypassword' -c 'enumprinters 1'

        flags:[0x800000]
        name:[\\print-linux\hplaser1]
        description:[\\print-linux\hplaser1,,]
        comment:[hplaser1]


Enfin, exécutez la commande cupsaddsmb pour exporter les pilotes d'imprimantes pour une ou plusieurs files d'impression. l'argument -a exportera toutes les imprimantes :

srv7:~# cupsaddsmb -H PRINT-LINUX -U root -a -v
Password for root required to access PRINT-LINUX via SAMBA:

Running command: smbclient //PRINT-LINUX/print\$ -N -U'root%mypassword' -c 'mkdir W32X86;put /var/spool/cups/tmp/44f1d7b23ce31 W32X86/hplaserjet1.ppd;put /usr/share/cups/drivers/ps5ui.dll W32X86/ps5ui.dll;put /usr/share/cups/drivers/pscript.hlp W32X86/pscript.hlp;put /usr/share/cups/drivers/pscript.ntf W32X86/pscript.ntf;put /usr/share/cups/drivers/pscript5.dll W32X86/pscript5.dll'

Domain=[PRINT-LINUX] OS=[Unix] Server=[Samba 3.0.14a-Debian]
NT_STATUS_OBJECT_NAME_COLLISION making remote directory \W32X86
putting file /var/spool/cups/tmp/44f1d7b23ce31 as \W32X86/hplaserjet1.ppd (1735.1 kb/s) (average 1735.1 kb/s)
putting file /usr/share/cups/drivers/ps5ui.dll as \W32X86/ps5ui.dll (1384.2 kb/s) (average 1411.5 kb/s)
putting file /usr/share/cups/drivers/pscript.hlp as \W32X86/pscript.hlp (593.9 kb/s) (average 1166.8 kb/s)
putting file /usr/share/cups/drivers/pscript.ntf as \W32X86/pscript.ntf (1252.5 kb/s) (average 1236.1 kb/s)
putting file /usr/share/cups/drivers/pscript5.dll as \W32X86/pscript5.dll (1439.7 kb/s) (average 1295.4 kb/s)

Running command: rpcclient PRINT-LINUX -N -U'root%mypassword' -c 'adddriver "Windows NT x86" "hplaserjet1:pscript5.dll:hplaserjet1.ppd:ps5ui.dll:pscript.hlp:NULL:RAW:pscript.ntf"'
Printer Driver hplaserjet1 successfully installed.

Running command: rpcclient PRINT-LINUX -N -U'root%mypassword' -c 'setdriver hplaserjet1 hplaserjet1'
Succesfully set hplaserjet1 to driver hplaserjet1.



Le répertoire "3" contient maintenant le pilote pour l'imprimante nommé hplaserjet1 :


srv7:~# ls -R /var/lib/samba/printers/W32X86/
/var/lib/samba/printers/W32X86/:
3
/var/lib/samba/printers/W32X86/3:
hplaserjet1.ppd ps5ui.dll pscript5.dll pscript.hlp pscript.ntf


Pour lister les pilotes d'imprimantes dans Samba, utilisez la commande :
srv7:~# rpcclient PRINT-LINUX -N -U'root%mypassword' -c 'enumdrivers'

[Windows NT x86]
Printer Driver Info 1:
        Driver Name: [hplaserjet1]




B) Méthode manuelle avec les commandes Samba :

Liste des imprimantes CUPS détectées par Samba :

srv7:~# rpcclient PRINT-LINUX -N -U'root%mypassword' -c 'enumprinters 1'

        flags:[0x800000]
        name:[\\print-linux\hplaser1]
        description:[\\print-linux\hplaser1,,]
         comment:[hplaser1]

        flags:[0x800000]
        name:[\\print-linux\brotherhl2030]
        description:[\\print-linux\brotherhl2030,,]
        comment:[]

Installez sur un poste Windows (2000 ou XP) vos imprimantes réseau en utilisant les pilotes fournis dans leur CD d'installation.

Lister les pilotes installés sur cette station depuis votre serveur :

srv7:~# rpcclient STATIONXP -N -U'root%mypassword' -c 'enumdrivers 3'

Printer Driver Info 3:
        Version: [3]
        Driver Name: [Brother HL-2030 series]
        Architecture: [Windows NT x86]
        Driver Path: [\\STATIONXP\print$\W32X86\3\BROHL04B.DLL]
        Datafile: [\\STATIONXP\print$\W32X86\3\BH2030.PPD]
        Configfile: [\\STATIONXP\print$\W32X86\3\BRUHL04B.DLL]
        Helpfile: [\\STATIONXP\print$\W32X86\3\BROHL04B.HLP]

        Dependentfiles: [\\STATIONXP\print$\W32X86\3\BH2030.INI]
        Dependentfiles: [\\STATIONXP\print$\W32X86\3\BH2030.DAT]
        Dependentfiles: [\\STATIONXP\print$\W32X86\3\BW2030.INI]
        Dependentfiles: [\\STATIONXP\print$\W32X86\3\BE2030.DAT]
        Dependentfiles: [\\STATIONXP\print$\W32X86\3\BRLHL04B.DLL]
        Dependentfiles: [\\STATIONXP\print$\W32X86\3\BRSP104B.DLL]
        Dependentfiles: [\\STATIONXP\print$\W32X86\3\BRSP204B.DLL]
        Dependentfiles: [\\STATIONXP\print$\W32X86\3\BRQIKMON.EXE]
        Dependentfiles: [\\STATIONXP\print$\W32X86\3\BRQIKMON.HLP]
        Dependentfiles: [\\STATIONXP\print$\W32X86\3\BRMD04.EXE]
        Dependentfiles: [\\STATIONXP\print$\W32X86\3\BRBUL04B.DLL]
        Dependentfiles: [\\STATIONXP\print$\W32X86\3\BRBHL04B.DLL]
        Dependentfiles: [\\STATIONXP\print$\W32X86\3\BRBNL04B.DLL]


        Monitorname: []
          (Mettre RAW si ce champs est vide)
        Defaultdatatype: []

Server does not support environment [Windows NT R4000]
Server does not support environment [Windows NT PowerPC]


Installation du pilote dans Samba (suivre la syntaxe en couleur) :
srv7:~# rpcclient PRINT-LINUX -N -U'root%mypassword' -c 'adddriver "Windows NT x86" "brotherhl2030:BROHL04B.DLL:BH2030.PPD:BRUHL04B.DLL:BROHL04B.HLP:RAW:NULL:NULL"'
Printer Driver brotherhl2030 successfully installed.

Mettez NULL quand vous n'avez pas d'informations ou que vous ne voulez rien saisir.


Vérifiez la liste des pilotes installés dans Samba :

srv7:~# rpcclient PRINT-LINUX -N -U'root%mypassword' -c 'enumdrivers'

[Windows NT x86]
Printer Driver Info 1:
        Driver Name: [hplaserjet1]


Printer Driver Info 1:
        Driver Name: [brotherhl2030]


Association du pilote avec l'imprimante :
srv7:~# rpcclient PRINT-LINUX -N -U'root%mypassword' -c 'setdriver brotherhl2030 brotherhl2030'
Succesfully set brotherhl2030 to driver brotherhl2030.




Pour effacer un pilote d'imprimante de Samba :
srv7:~# rpcclient PRINT-LINUX -N -U'root%mypassword' -c 'deldriverex hplaserjet1 "Windows NT x86"'
Driver hplaserjet1 and files removed for arch [Windows NT x86] (version: 3).




Configuration des Imprimantes sur les clients Window$

Sur vos Workstation$ avec un utilisateur sans droits, explorez votre domaine depuis Favoris réseau.
Explorez les imprimantes disponibles sur votre serveur PRINT-LINUX. Faites un clic droit sur celle que vous souhaitez installer puis choisissez "Se connecter".
L'imprimante a été installée automatiquement, elle est fonctionnelle.




Source : http://www.cups.org/



Dernière modification : 06/09/06

 

Copyright © 04/02/2004, Arnofear

Contrat Creative Commons Ce document est publié sous licence Creative Commons
Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique :
http://creativecommons.org/licenses/by-nc-sa/3.0/deed.fr