Guide Samba3/CUPS pour Gentoo
1.
Introduction
Objectifs
Ce guide a pour but de vous aider à passer d'un réseau avec différents clients
qui utilisent des protocoles différents à un réseau de machines qui utilisent
un langage commun. Le but ultime est d'aider différentes architectures et
technologies à s'unir et à coexister dans un environnement productif et
tranquille.
En suivant les directives indiquées dans ce guide, vous pourrez faire un pas en
avant dans la direction d'une cohabitation pacifique entre Windows et
pratiquement toutes les variantes connues de *nix.
Ce guide a d'abord été une FAQ. L'intention était d'explorer les
fonctionnalités et la puissance du système Gentoo et de Portage et la
flexibilité des options USE. Comme de nombreux autres projets, on s'est vite
aperçu de ce qu'il manquait dans le royaume Gentoo : il n'y avait aucun
guide sur Samba pour les utilisateurs de Gentoo. Ces utilisateurs demandent
plus que le meilleur : ils veulent des performances, de la flexibilité et
la possibilité de l'adapter à leurs besoins. Ce qui ne veut pas dire que ce
guide n'est pas destiné aux autres distributions, mais il a plutôt été créé
pour travailler avec une version très personnalisée de Samba.
Ce guide décrit comment partager des fichiers et des imprimantes entre des PC
Windows et des PC *nix. Nous allons vous montrer comment monter et manipuler
les partages.
Quelques sujets un peu hors du propos de ce guide seront mentionnés. Ils seront
signalés quand ils apparaîtront.
Ce guide est basé sur une compilation d'un excellent HOWTO fourni sur les forums Gentoo par Andreas
« daff » Ntaflos et des connaissances acquises par Joshua Preston. Le
lien vers cette discussion vous est fourni ci-dessous pour référence (en
anglais) :
Avant que vous n'utilisiez ce guide
De nombreux autres guides décrivent l'installation de CUPS et/ou Samba ;
je vous invite à les lire également étant donné qu'ils peuvent vous apprendre
des choses ne figurant pas dans ce guide (intentionnellement ou pas). L'un de
ces documents est le guide très utile et bien écrit Imprimer avec Gentoo, car la
configuration spécifique des imprimantes n'est pas expliquée ici.
Survol rapide
Après vous avoir présenté les différentes options USE, la liste suivante
présente les différents sujets couverts dans l'ordre de leur apparition.
- Sur le serveur Samba :
- Installer et configurer Samba.
- Installer et configurer CUPS.
- Ajouter une imprimante à CUPS.
- Ajouter les pilotes PS pour les clients Windows.
- Sur les clients UNIX :
- Installer et configurer CUPS.
- Configurer une imprimante par défaut.
- Monter un partage Windows ou Samba.
- Sur les clients Windows :
- Configurer l'imprimante.
- Accéder aux partages Samba.
Pré-requis
Nous allons avoir besoin de :
-
net-fs/samba ;
-
net-print/cups (avec le USE ppds) ;
-
net-print/foomatic ;
-
net-print/hplip (si vous avez une imprimante HP) ;
- Un noyau (2.6) ;
- Une imprimante (PS ou non-PS)
-
Un réseau fonctionnel (personnel/bureau/etc.) constitué de plus d'une
machine.
Le paquet principal que nous utilisons ici est net-fs/samba. Cependant,
vous aurez besoin d'un noyau avec le support de CIFS activé pour pouvoir monter
un partage Samba ou Windows d'un autre ordinateur. CUPS va être installé si ce
n'est pas déjà fait.
2.
Se familiariser avec Samba
Les paramètres USE
Avant d'installer quoique ce soit, jetez un œil sur les différents paramètres
USE disponibles pour Samba.
Exemple de code 2.1 : Samba utilise les paramètres USE suivants |
kerberos acl cups ldap pam readline python winbind
|
Selon la topologie du réseau et les besoins spécifiques du serveur, les
paramètres USE décrits ci-dessous vont définir ce qu'il faut inclure ou
exclure à l'installation de Samba.
| Paramètres USE |
Description |
| kerberos |
Ajoute le support pour Kerberos. Le serveur va en avoir besoin si vous avez
l'intention de vous joindre à un domaine existant ou à Active Directory.
Voyez la note plus bas à ce sujet pour plus d'informations.
|
| acl |
Active les listes de contrôle d'accès. Le support ACL dans Samba utilise
une version modifiée de ext2/ext3 ou de XFS de SGI afin de fonctionner
correctement, dans la mesure où il étend les possibilités d'accès aux
fichiers et répertoires ; avec plus de précisions que les schémas
typiques GID/UID des *nix.
|
| cups |
Active le support pour le système d'impression commun pour Unix (Common
Unix Printing System). Ce dernier fournit une interface qui permet aux
imprimantes CUPS locales d'être partagées avec les autres systèmes du
réseau.
|
| ldap |
Active le protocole simplifié d'accès aux répertoires (Lightweight
Directory Access Protocol ou LDAP). Si vous souhaitez utiliser Samba avec
Active Directory, cette option doit être utilisée. Ce sera utilisé dans le
cas où Samba doit se connecter ou fournir une connexion à un domaine ou à
un serveur Active Directory. Le paramètre kerberos est nécessaire pour un
fonctionnement correct de ce paramètre.
|
| pam |
Ajoute le support pour les greffons d'authentification (« pluggable
authentication modules » ou PAM). Ceci fournit la possibilité
d'authentifier des utilisateurs sur le serveur Samba, ce qui est nécessaire
si les utilisateurs doivent se connecter sur votre serveur. Le paramètre
kerberos est recommandé conjointement avec celui-ci.
|
| readline |
Permet de lier Samba avec libreadline. Ceci est hautement recommandé et ne
devrait normalement pas être désactivé.
|
| python |
API de liaison avec Python. Fournit une API qui va permettre à Python de
s'interfacer avec Samba.
|
| winbind |
Winbind permet d'avoir une connexion unique dans un environnement Samba. Il
utilise une implémentation Unix des appels RPC de Windows, PAM et le
changement de nom de service (supporté par la librairie C) pour permettre
aux utilisateurs des domaines Windows NT de passer et de travailler comme
des utilisateurs Unix sur un système Unix.
|
Voici quelques aspects intéressants à propos des paramètres USE et des
différentes fonctions de Samba :
-
Les ACL sur ext2/3 sont implémentées grâce aux attributs étendus (EA).
Les options du noyau EA et ACL pour ext2 et/ou ext3 devront être
activées pour le système de fichiers sur lequel ils seront utilisés ;
les deux peuvent être activées.
-
Étant donné qu'Active Directory, les ACL et les fonctions PDC sont
hors du propos de ce guide, vous pourrez trouver ces liens utiles
(sites en anglais) :
3.
Installation des logiciels du serveur
Installation de Samba
Avant toute chose, vérifiez que la résolution de noms de vos hôtes s'effectue
correctement. Il faut que votre serveur de noms de domaine (DNS) soit
fonctionnel sur votre réseau ou que votre fichier /etc/hosts
possède les entrées appropriées. cupsaddsmb se comporte souvent de façon
anormale si les noms d'hôte ne pointent pas sur les bonnes machines.
Avec un peu de chance, à présent vous pouvez choisir ce dont vous avez besoin
pour utiliser Samba avec votre propre installation. L'installation choisie pour
ce guide est :
Pour optimiser les performances, la taille et le temps de compilation, les
paramètres USE sont spécifiquement inclus ou exclus.
Tout d'abord, ajoutez ppds à votre liste de paramètres USE pour que CUPS
se construise avec le support de foomatic :
Exemple de code 3.1 : Ajouter ppds aux USE |
# echo "net-print/cups ppds" >> /etc/portage/package.use
|
Maintenant, installez Samba :
Exemple de code 3.2 : Installation de Samba |
# echo "net-fs/samba readline cups pam" >> /etc/portage/package.use
# emerge net-fs/samba
|
Ceci va installer Samba et CUPS.
Installation de net-print/hplip
À installer uniquement si vous utilisez une imprimante HP.
Exemple de code 3.3 : Installation de hplip |
# emerge net-print/hplip
|
4.
Configuration du serveur
Configurer Samba
Le fichier principal de configuration de Samba est
/etc/samba/smb.conf. Il est divisé en sections indiquées par
[nom_de_la_section]. Les commentaires sont soit # ou ;. Un exemple de
smb.conf est inclus ci-dessous avec des commentaires et des
suggestions de modification. Si vous avez besoin de plus de détails, voyez la
page man de smb.conf, le fichier installé
smb.conf.example, le site web de Samba ou l'un des nombreux livres
disponibles sur Samba.
Exemple de code 4.1 : Un exemple de /etc/samba/smb.conf |
[global]
workgroup =
server string = Samba Server %v
printcap name = cups
printing = cups
load printers = yes
log file = /var/log/samba/log.%m
max log size = 50
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
interfaces = lo eth0
bind interfaces only = yes
hosts allow = 127.0.0.1 192.168.1.0/24
hosts deny = 0.0.0.0/0
security = share
guest ok = yes
[print$]
comment = Pilotes d'impression
path = /etc/samba/printer
guest ok = yes
browseable = yes
read only = yes
write list = root
[HPDeskJet930C]
comment = HP DeskJet 930C Network Printer
printable = yes
path = /var/spool/samba
public = yes
guest ok = yes
printer admin = root
[printers]
comment = All Printers
browseable = no
printable = yes
writable = no
public = yes
guest ok = yes
path = /var/spool/samba
printer admin = root
[public]
comment = Public Files
browseable = yes
public = yes
create mode = 0766
guest ok = yes
path = /home/samba/public
|
Attention :
Si vous souhaitez utiliser le compte « guest » de Samba pour
autoriser les impressions depuis des clients Windows, ne mettez pas guest
only = yes dans la section [global]. Le compte « guest »
semble poser des problèmes quand on utilise cupsaddsmb parfois quand on
essaie de se connecter depuis des machines Windows. Voyez également ci-dessous
où nous parlons de cupsaddsmb et des problèmes qui peuvent survenir.
Utilisez un utilisateur dédié pour l'impression, par exemple
« printeruser » ou « printer ». Ça ne fait pas de mal et va
certainement vous éviter bien des problèmes.
|
À présent, créez les répertoires nécessaires pour la configuration minimum de
Samba pour partager l'imprimante installée via le réseau.
Exemple de code 4.2 : Création des répertoires |
# mkdir /etc/samba/printer
# mkdir /var/spool/samba
# mkdir /home/samba/public
|
Un utilisateur Samba est nécessaire pour installer les pilotes d'imprimante et
pour permettre aux utilisateurs de se connecter à l'imprimante. Les
utilisateurs doivent exister dans le fichier système /etc/passwd.
Exemple de code 4.3 : Création des utilisateurs |
# smbpasswd -a root
# smbpasswd -a username
|
Les mots de passe Samba n'ont pas à être les mêmes que ceux du système dans
/etc/passwd.
Vous devez aussi mettre à jour /etc/nsswitch.conf afin que les
systèmes Windows puissent être trouvés facilement en utilisant NetBIOS :
Exemple de code 4.4 : Édition de /etc/nsswitch.conf |
# nano -w /etc/nsswitch.conf
hosts: files dns wins
|
Configuration de CUPS
Ceci est un peu plus compliqué. Le fichier de configuration principal de CUPS
est /etc/cups/cupsd.conf. Sa structure est similaire à celle du
fichier Apache httpd.conf à un tel point qu'il pourra vous sembler
familier. Sont citées dans les exemples les directives qui doivent être
changées :
Exemple de code 4.5 : /etc/cups/cupsd.conf |
ServerName leServeur
ServerAdmin root@Serveur_impression
AccessLog /var/log/cups/access_log
ErrorLog /var/log/cups/error_log
LogLevel debug
MaxClients 100
BrowseAddress @IF(eth0)
<Location />
Order Deny,Allow
Deny From All
Allow From 192.168.1.*
</Location>
<Location /admin>
AuthType Basic
AuthClass System
Allow From 192.168.1.*
Order Deny,Allow
Deny From All
</Location>
|
Éditez /etc/cups/mime.convs pour décommenter certaines lignes. Les
changements apportés à mime.convs et à mime.types sont
nécessaires pour permettre à CUPS d'imprimer des documents Microsoft Office.
Exemple de code 4.6 : /etc/cups/mime.convs |
application/octet-stream application/vnd.cups-raw 0
|
Éditez /etc/cups/mime.types pour décommenter certaines lignes.
Exemple de code 4.7 : /etc/cups/mime.types |
application/octet-stream
|
CUPS a besoin d'être lancé au démarrage et démarré immédiatement.
Exemple de code 4.8 : Lancement du service CUPS |
# rc-update add cupsd default
# /etc/init.d/cupsd restart
|
Installer une imprimante pour et avec CUPS
Premièrement, allons sur LinuxPrinting.Org pour trouver et
télécharger le fichier PPD correct pour votre imprimante et CUPS. Pour ce
faire, cliquez sur le lien Printer Listings sur la gauche. Sélectionnez
votre fabriquant d'imprimante et le modèle dans le menu déroulant, par exemple
HP et Deskjet 930C. Cliquez sur Show. Sur la page suivante, cliquez
sur le lien recommended driver après avoir lu les différentes notes et
informations. Ensuite, récupérez le fichier PPD sur la page suivante en ayant
encore une fois lu les notes et introductions. Il se peut que vous deviez
sélectionner les fabriquant et modèle de votre imprimante à nouveau. Lire le
CUPS quickstart
guide (en anglais) est aussi utile pour travailler avec CUPS.
À présent, vous avez un fichier PPD pour faire fonctionner votre imprimante
avec CUPS. Placez-le dans /usr/share/cups/model. Le fichier PPD
pour la HP Deskjet 930C est nommé HP-DeskJet_930C-hpijs.ppd. Vous
devez maintenant installer l'imprimante. Ceci peut être fait via l'interface
web de CUPS ou via la ligne de commande. L'interface web se trouve à l'adresse
http://PrintServer:631 une fois que CUPS tourne.
Exemple de code 4.9 : Installation de l'imprimante via la ligne de commande |
# lpadmin -p HPDeskJet930C -E -v usb:/dev/ultp0 -m HP-DeskJet_930C-hpijs.ppd
# /etc/init.d/cupsd restart
|
Ajustez le tout selon votre environnement. Vérifiez notamment que le nom
(l'option -p) correspond au nom que vous avez choisi durant la
configuration de Samba et que le périphérique est indiqué correctement
(usb:/dev/usb/blah, parallel:/dev/blah ou autre).
Vous devriez à présent pouvoir accéder à l'imprimante à partir de l'interface
web. Vous pouvez imprimer une page de test.
Installer les pilotes d'impression pour Windows
Maintenant que l'imprimante fonctionne, il est temps d'installer les pilotes
pour les clients Windows. Samba 2.2 a introduit cette fonctionnalité. Un
utilisateur peut naviguer sur le serveur d'impression dans le voisinage réseau,
faire un clic droit sur l'imprimante partagée et choisir
« Connexion » pour télécharger les pilotes appropriés automatiquement
sur son PC, ce qui lui évite la pénible tâche de l'installation manuelle.
Il y a deux sortes de pilotes d'imprimante pour ceci. Premièrement, les pilotes
Adobe PS qui peuvent être téléchargés à partir du site d'Adobe (pilotes
PostScript). Deuxièmement, les pilotes PS CUPS qui peuvent être obtenus en
installant net-print/cups-windows. Notez qu'il est possible qu'il soit
encore estampillé en ~arch, dans ce cas vous devrez l'ajouter au fichier
/etc/portage/package.keywords. Il ne semble pas y avoir de
différence de fonctionnalités entre les deux, mais le pilote Adobe PS doit être
extrait sur un système Windows étant donné qu'il s'agit d'un binaire Windows.
De plus, la procédure complète pour trouver et copier les fichiers corrects est
un peu plus compliquée. Les pilotes CUPS supportent plus d'options que ceux
d'Adobe.
Ce guide utilise les pilotes CUPS pour Windows. Installez-les comme ceci :
Exemple de code 4.10 : Installation des pilotes |
# emerge -av cups-windows
|
À présent, nous allons utiliser le script cupsaddsmb fourni avec CUPS.
Assurez-vous de lire son manuel (man cupsaddsmb) qui vous indiquera quels
pilotes Windows vous devrez copier dans le répertoire approprié de CUPS. Une fois
que vous avez copié les pilotes, redémarrez CUPS avec
/etc/init.d/cupsd restart. Ensuite, exécutez cupsaddsmb comme
ceci :
Exemple de code 4.11 : Lancement de cupsaddsmb |
# cupsaddsmb -H PrintServer -U root -h PrintServer -v HPDeskJet930C
# cupsaddsmb -H PrintServer -U root -h PrintServer -a
|
Attention :
L'exécution de cette commande pose souvent problème. Jetez un œil à cette discussion pour
trouver quelques astuces.
|
Voici les erreurs les plus courantes :
-
Le nom d'hôte donné comme paramètre -h et -H
(PrintServer) n'est souvent pas résolu correctement et n'identifie
pas le serveur d'impression pour l'interaction CUPS/Samba. Si une erreur du
style : Warning: No PPD file for printer "CUPS_PRINTER_NAME" -
skipping! apparaît, la première chose que vous devriez faire est
remplacer PrintServer par localhost et essayer à nouveau.
-
La commande échoue avec un NT_STATUS_UNSUCCESSFUL. Ce message
d'erreur est plutot courant, mais peut être causé par de nombreux
problèmes. Ce n'est malheureusement pas très utile. Une chose à essayer
est de mettre temporairement security = user dans votre
smb.conf. Après que/si l'installation se termine
correctement, vous devriez le remettre à share, ou ce qui était mis
auparavant.
Ceci devrait installer la bonne structure de répertoires de pilotes dans
/etc/samba/printer. Ce qui doit donner
/etc/samba/printer/W32X86/2/. Les fichiers contenus devraient être
les 3 fichiers du pilote et le fichier PPD renommé en VotreImprimante.ppd (le
nom que vous avez donné à l'imprimante quand vous l'avez installée (voyez
ci-dessus).
Sauf erreurs ou autres complications, vos pilotes sont maintenant installés.
Finalisons notre installation
Pour finir, mettons en place nos répertoires.
Exemple de code 4.12 : Derniers changements nécessaires |
# mkdir /home/samba
# mkdir /home/samba/public
# chmod 755 /home/samba
# chmod 755 /home/samba/public
|
Testons notre configuration de Samba
Nous allons tester notre fichier de configuration pour vérifier qu'il est
formaté correctement et que toutes nos options ont au moins la syntaxe
correcte. Pour ce faire, lançons testparm.
Exemple de code 4.13 : Lancement de testparm |
# /usr/bin/testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[printers]"
Global parameter guest account found in service section!
Processing section "[public]"
Global parameter guest account found in service section!
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
...
...
|
Lancement du service Samba
À présent, configurons Samba pour se lancer au démarrage ; puis
lançons-le.
Exemple de code 4.14 : Lancement du service Samba |
# rc-update add samba default
# /etc/init.d/samba start
|
Vérifions nos services
Il serait probablement prudent de vérifier nos fichiers de journalisation
maintenant. Nous allons aussi tester nos partages Samba avec smbclient.
Exemple de code 4.15 : Vérification des partages avec smbclient |
# smbclient -L localhost
Password:
|
5.
Configuration des clients
Configuration de l'imprimante sur les clients *nix
Malgré la variété de distributions, la seule chose nécessaire est CUPS. Faites
de même sur n'importe quel autre client UNIX/Linux/BSD.
Exemple de code 5.1 : Configurer un système Gentoo |
# emerge cups
# nano -w /etc/cups/client.conf
ServerName leServeur
|
Cela devrait suffire. Rien d'autre n'est nécessaire.
Si vous n'utilisez qu'une seule imprimante, elle sera votre imprimante par
défaut. Si votre serveur d'impression gère plusieurs imprimantes, votre
administrateur aura défini une imprimante par défaut globale. Si vous voulez
définir votre propre imprimante par défaut, utilisez la commande
lpoptions.
Exemple de code 5.2 : Définir une imprimante par défaut |
# lpstat -a
HPDeskJet930C accepting requests since Jan 01 00:00
laser accepting requests since Jan 01 00:00
# lpoptions -d HPDeskJet930C
|
Exemple de code 5.3 : Imprimer sur *nix |
# lp -d HPDeskJet930C machin.txt
# lp truc.bidule.ps
|
Monter un partage Windows ou Samba sous GNU/Linux
Note :
N'oubliez pas d'exécuter d'abord la commande net-fs/mount-cifs ou
emerge samba sur le(s) poste(s) client(s) qui auront accès aux partages.
|
À présent, il est temps de configurer notre noyau pour supporter CIFS. Étant
donné que je suppose que vous avez tous compilé au moins un noyau, nous devons
nous assurer que toutes les bonnes options sont sélectionnées dans notre noyau.
Pour simplifier les choses, mettez-les en modules afin de faciliter
l'utilisation. L'auteur pense qu'il est bon de mettre les modules dans le noyau
et que cela devrait être fait autant que possible.
Exemple de code 5.4 : Support dans le noyau |
CONFIG_CIFS=m
|
À présent, lancez la compilation et l'installation de ce dernier. Ensuite,
chargez-le avec :
Exemple de code 5.5 : Chargement des modules noyau |
# modprobe cifs
|
Une fois que les modules sont chargés, il est possible de monter un partage
Windows ou Samba. Utilisez mount comme expliqué ci-dessous :
Exemple de code 5.6 : Monter un partage Windows/Samba |
# mount -t cifs //PrintServer/public /mnt/public
# mount -t cifs -o username=USERNAME,password=PASSWORD //PrintServer/public /mnt/public
|
Après avoir monté le partage, vous devriez pouvoir y accéder comme si c'était
un disque local.
Configuration des imprimantes pour les clients Windows NT/2000/XP
Il s'agit juste de faire du pointer-cliquer. Naviguez vers
\\PrintServer et faites un clic droit sur l'imprimante
(HPDeskJet930C) et cliquez sur connexion. Ceci va télécharger les pilotes sur
le client Windows et chaque application (telle que Word ou Acrobat) va montrer
HPDeskJet930C comme une imprimante disponible. :-)
6.
Notes finales
Un adieu amical
Ça devrait être tout. Vous devriez à présent avoir un environnement
d'impression fonctionnel utilisable sous Windows et *nix et également un
partage totalement fonctionnel !
7.
Liens et ressources
Liens
Voici quelques liens qui peuvent vous aider lors de l'installation, la
configuration et le dépannage de votre installation (tout en anglais) :
Dépannage
Voyez le manuel de Kurt Pfeifle Printing
Support in Samba 3.0. Un tas d'astuces utiles ! Lisez-le avant de
poser des questions ! La solution que vous cherchez est peut-être juste
là.
Ce document est protégé par la licence Creative
Commons : Paternité - Partage des Conditions Initiales à
l'Identique 2.5.
|