Page suivante Page précédente Table des matières

1. SAMBA, Win95, NT et HP Jetdirect

Par Eugene Blanchard blanchas@cadvision.com

J'utilise un laboratoire de routage pour enseigner les concepts fondamentaux du routage sur des équipements propriétaires. Il peut accueillir 18 personnes sur 9 PC. Il y a également 1 serveur et une imprimante HP LaserJet 4050N avec une carte serveur d'impression HP Jetdirect. Le serveur tourne sous une Slackware 4.0 avec Linux 2.2.6. Huit des PC tournent sous WinNT 4.0 SP5 et un PC tourne sous Win95a.

Mes besoins pour le serveur Linux sont les suivants :

Il y avait la possibilité d'utiliser NFS et de configurer chaque client pour se connecter au serveur Linux, ou d'utiliser SAMBA et de configurer seulement le serveur. En fonctionnement normal du labo, les clients sont régulièrement rebâtis, redémarrés et re-configurés. On imaginait qu'en exécutant les services SAMBA, le serveur Linux serait transparent aux clients et permettrait une installation très simple des clients.

Cet article décrira comment j'ai utilisé SAMBA pour :

NOTE : ceci n'est pas un article du genre "HOWTO", mais un exemple de configuration éprouvé et le processus utilisé pour configurer SAMBA

1.1 Installation de SAMBA

Le processus d'installation dépendra de la distribution de Linux que vous utilisez. Sous la Slackware, sélectionnez SAMBA pendant l'installation, ou si vous ajoutez SAMBA à un système existant, utilisez l'utilitaire pkgtool.

Positionnez-vous sur le CD de la Slackware, répertoire /slakware/N11. Tapez pkgtool puis "Install packages from current directory" (installation des paquetages depuis le répertoire courant). Pour toutes les autres distributions, cet article se basera sur le fait que vous avez SAMBA correctement installé sur votre système.

Sous Slackware, SAMBA est démarré par le script rc "/etc/rc.d/rc.samba":


#
# rc.samba: démarrage du serveur  samba 
#
if [ -x /usr/sbin/smbd -a -x /usr/sbin/nmbd ]; then
  echo "Starting Samba..."
  /usr/sbin/smbd -D
  /usr/sbin/nmbd -D
fi

Le démon smbd fournit les services SMB/CIFS aux clients. SMB (Server Message Block) est l'ensemble des services utilisés par des clients win95 et winNT pour se connecter au travers du réseau. Le nouveau nom d'SMB est CIFS ("Common Internet File System", système de fichiers commun pour l'internet).

Le démon nmbd est un serveur de noms NETBIOS pour permettre la résolution de noms NETBIOS au dessus d'IP.

Taper "ps -aux" permettra de visualiser les processus qui tournent actuellement et de voir si smbd et nmbd sont bien présents :


USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.2   220  128 ?        S    Oct21   0:02 init
root         2  0.0  0.0     0    0 ?        SW   Oct21   0:00 [kflushd]
root         3  0.0  0.0     0    0 ?        SW   Oct21   0:00 [kpiod]
root         4  0.0  0.0     0    0 ?        SW   Oct21   0:00 [kswapd]


root       101  0.0  0.5  1544  380 ?        S    Oct21   0:00 /usr/sbin/smbd -D
root       103  0.0  0.9  1196  584 ?        S    Oct21   0:03 /usr/sbin/nmbd -D


root      8113  0.4  0.9  1164  616 ttyp0    S    11:14   0:00 -bash
root      8120  0.0  1.1  2272  744 ttyp0    R    11:14   0:00 ps -aux

1.2 Fichier de configuration de SAMBA

Le fichier de configuration pour SAMBA est /etc/smb.conf, et il y a de nombreux exemples de configurations sous /usr/doc/samba-2.0.3/examples.

Le fichier /etc/smb.conf peut être divisé en 3 sections générales :


# paramètres globaux

        workgroup = E328                # nom du groupe de travail
        netbios name = E328-00          # nom netbios du server Linux 
        server string = %h - Linux Samba server         # commentaire affiché dans "voisinage réseau"
        interfaces = 192.168.1.3/24     # NICs + subnet mask (24 = 255.255.255.0)~
        encrypt passwords = Yes         # requis pour NT (Win95 )
        null passwords = No             # mot de passe obligatoire
        log file = /var/log/samba.      # ou ranger les (nombreux!) fichiers de log
        max log size = 50               # taille maxi des fichiers de log
        socket options = TCP_NODELAY    # accélère la convergence de netbios
        os level = 33                   # donne une "priorité" au navigateur maître plus importante
        preferred master = Yes          # ce serveur est le navigateur maître
        guest account = pcguest         # nom du compte "invité"
        hosts allow = 192.168.1. 127.   # réseaux autorisés à accéder à ce serveur par SMB

La section Shares s'occupe du partage des répertoires. Par exemple :


[homes]<!--ici-->
        comment = Home Directories      # commentaires affichés dans la vues détaillée du Voisinage Réseau de Windows
        path = %H                       # affiche automatiquement le répertoire de l'utilisateur en tant que partage SMB
        valid users = %S                # seul l'utilisateur est autorisé à accéder à ce répertoire
        read only = No                  # possibilité de lecture/écriture
        create mask = 0750              # permissions données aux nouveaux fichiers crées
        browseable = No                 # montre uniquement le répertoire de l'utilisateur, pas de répertoire "homes"

[public]
        comment = Public Files          # commentaires affichés dans la vues détaillée du Voisinage Réseau de Windows
        path = /home/ftp/pub            # chemin d'accès au répertoire public
        guest ok = Yes                  # tout le monde peut accéder à ce répertoire

[cdrom]
        comment = Cdrom on E328-00      #
        path = /cdrom                   # chemin d'accès à la platine CD
        guest ok = Yes                  # tout le monde peut accéder au CD-ROM, partage public

La section Printers s'occupe du partage des imprimantes. Par exemple :


[lp] 
        comment = E328-Laser            # commentaires affichés dans la vues détaillée du Voisinage Réseau de Windows
        path = /var/spool/samba         # chemin du répertoire de spool
        print ok = Yes                  # permission d'ouvrir, d'écrire et de proposer une entrée dans le répertoire de spool

Vous pouvez créer le fichier /etc/smb.conf manuellement si vous savez ce que signifie chaque entrée, ou vous pouvez utiliser l'interface web appelée SWAT (SAMBA Web Administration Tool, Outil Web d'administration SAMBA). Les petits plus de SWAT sont les fichiers d'aide en ligne qui décrivent chaque choix disponible. Je comprends que SWAT soit installé automatiquement avec toutes les versions récentes de SAMBA, à partir de la 2.0 et supérieures.

1.3 Exécution de SWAT

Les instructions suivantes sont prises directement dans le fichier /usr/doc/samba-2.0.3/swat/README :


Exécution via inetd
-------------------
Vous devez ensuite éditer vos fichiers /etc/inetd.conf et /etc/services
pour permettre à SWAT d'être lancé via  inetd.

Dans /etc/services il vous faut ajouter une ligne comme celle-ci~:

swat            901/tcp

le choix du numéro de port n'est pas vraiment important excepté qu'il doit
être inférieur à 1024 et ne pas être en cours d'utilisation (l'utilisation d'un
port supérieur à 1024 présente un obscur trou dans la sécurité, en fonction
des détails d'implémentation de votre démon inetd).

Dans /etc/inetd.conf vous devrez ajouter une ligne comme~:

swat    stream  tcp     nowait.400      root    /usr/local/samba/bin/swat swat

Une fois que vous aurez édité /etc/services et /etc/inetd.conf vous devrez
envoyer un signal HUP à inetd.
Sur beaucoup de systèmes "killall -1 inetd" suffira, sur d'autres il faudra utiliser
"kill -1 PID" où PID est le numéro de process du démon inetd.

Lancement
---------

Pour lancer SWAT, faites juste pointer votre navigateur préféré sur 
http://localhost:901

Notez que vous pouvez accéder à SWAT depuis n'importe quelle machine connectée
via un réseau IP, mais une connexion distante ouvre la possibilité de se faire
"sniffer" son mot de passe, étant donné qu'il passe en clair sur la ligne.

Un nom d'utilisateur et mot de passe devraient vous être demandés à la connexion.
Vous aurez besoin de l'utilisateur "root" et de son mot de passe réel.

Une fois SWAT démarré et actif, vous devriez voir ceci.

Les boutons de menus sont plutôt auto-explicatifs, et il y a d'excellents écrans d'aide. Voici un résumé rapide des menus :

Tout changement de configuration dans les sections Global, Shares et Printers doit être validé en utilisant le bouton/icône "commit" sur leur page respective. Sinon le fichier /etc/smb.conf n'est pas modifié.

Une fois les modifications prises en compte (/etc/smb.conf modifié), les serveurs smbd et nmbd doivent être redémarrés. Le menu Status a des options qui permettent d'arrêter et de mettre en marche ces serveurs.

Je trouve qu'un bon moyen de comprendre ce qui est fait est de regarder le fichier /etc/smb.conf au fur et à mesure des changements par le bouton View de SWAT.

1.4 Noms d'utilisateurs

Il est très important que les noms d'utilisateurs et les mots de passe soient les mêmes pour les deux environnements Linux et Windows. La synchronisation des mots de passe sous Linux avec les mots de passes cryptés par SMB est faite par le script shell mksmbpasswd.sh qui se trouve dans le répertoire /usr/lib/samba/private.

Note : Pour la Slackware, le répertoire de SAMBA est /usr/lib et non le répertoire standard /usr/local.

Les informations suivantes sont extraites du fichier /usr/doc/samba-2.0.3/docs/textdocs/ENCRYPTION.txt :


Le fichier smbpasswd
--------------------

Pour permettre à SAMBA de prendre part au protocole ci-dessus, il doit être
capable de retrouver les valeurs sur 16 octets hachées à partir d'un nom
d'utilisateur.
Malheureusement, (ndt : Je dirais l'inverse !) comme la valeur du champs mot
de passe est également une fonction de hachage à sens unique (ie. il est
impossible de retrouver le texte en clair, c.a.d le mot de passe, à partir du
hachage qu'UNIX en fait), on doit garder un fichier de mots de passe séparé
contenant ces valeurs sur 16 octets.
Pour minimiser les problèmes avec 2 fichiers de mots de passe, comme le déphasage,
un utilitaire, mksmbpasswd.sh, est fournit pour générer un fichier smbpasswd
depuis le fichier /etc/passwd d'UNIX.

Pour générer le fichier smbpasswd depuis votre fichier /etc/passwd, utilisez la
commande suivante :

cat /etc/passwd | mksmbpasswd.sh >/usr/local/samba/private/smbpasswd

Le problème que j'ai rencontré à cette étape est que je m'attendais à ce qu'il reconnaisse automatiquement les mots de passe "fantômes" (shadow) et les place dans le fichier smbpasswd. Malheureusement, il ne l'a pas fait et j'ai du entrer les mots de passe manuellement avec la commande smbpasswd. Heureusement, je n'ai eu qu'une dizaine de mots de passe à rentrer. Il y a probablement une méthode pour le faire en automatique, mais je n'en suis pas informé.

Une fois ceci accompli, j'ai été capable d'utiliser le Voisinage Réseau, et d'ouvrir les partages des répertoires Linux sans devoir entrer un nom d'utilisateur et mot de passe.

1.5 Configuration de la carte HP JetDirect sous Linux

Faire marcher la carte HP JetDirect sous Linux fut étonnamment simple. La carte HP JetDirect est un serveur d'impression qui s'installe dans l'imprimante HP 4050N. Le premier pas est de configurer la carte HP Jetdirect et l'imprimante. La disquette d'installation standard ne contient pas de support pour Linux mais il y a un outil d'administration par le Web que vous pouvez télécharger depuis le site HP : http://www.hp.com/support/net_printing. J'ai choisi de le faire manuellement en utilisant telnet et le serveur web inclus sur la carte HP JetDirect.

Accéder par telnet à la carte JetDirect

Pour accéder par telnet à la carte JetDirect, il vous faut configurer l'adresse IP de l'imprimante. L'adresse par défaut est 192.0.0.192, qui n'est certainement pas une adresse valide sur votre réseau . L'imprimante HP 4050N vous permet de configurer une adresse IP par le panonceau de commande : sélectionnez "JetDirect Menu" avec le bouton Menu et suivez les indications pour configurer le réseau. Après avoir entré l'adresse IP, configurez le masque du sous-réseau de manière similaire.

Connectez-vous par telnet sur l'adresse IP de l'imprimante. Vous avez deux choix lors de la connexion : voir la configuration courante en tapant "/", ou voir le menu d'aide en tapant "?", comme décrit ci-dessous :


Please type "?" for HELP, or "/" for current settings 
>/ 
   ===JetDirect Telnet Configuration=== 
        Firmware Rev.   : G.07.20 
        MAC Address     : 00:10:83:1b:41:c7 
        Config By       : USER SPECIFIED 
 
        IP Address      : 192.168.1.10 
        Subnet Mask     : 255.255.255.0 
        Default Gateway : 192.168.1.1 
        Syslog Server   : Not Specified 
        Idle Timeout    : 120 Seconds 
        Set Cmnty Name  : notachance 
        Host Name       : E328-LASER 
 
        DHCP Config     : Disabled 
        Passwd          : Enabled 
        IPX/SPX         : Disabled 
        DLC/LLC         : Enabled 
        Ethertalk       : Disabled 
        Banner page     : Disabled   
 
>? 
        To Change/Configure Parameters Enter: 
        Parameter-name: value <Carriage Return> 
 
        Parameter-name  Type of value 
        ip:             IP-address in dotted notation 
        subnet-mask:    address in dotted notation 
        default-gw:     address in dotted notation 
        syslog-svr:     address in dotted notation 
        idle-timeout:   seconds in integers 
        set-cmnty-name: alpha-numeric string (32 chars max) 
        host-name:      alpha-numeric string (upper case only, 32 chars max) 
        dhcp-config:    0 to disable, 1 to enable 
        ipx/spx:        0 to disable, 1 to enable 
        dlc/llc:        0 to disable, 1 to enable 
        ethertalk:      0 to disable, 1 to enable 
        banner:         0 to disable, 1 to enable 
 
        Type passwd to change the password. 
 
 Type "?" for HELP, "/" for current settings or "quit" to save-and-exit. 
 Or type "exit" to exit without saving configuration parameter entries

La première chose à faire est de taper "passwd" et de mettre un mot de passe administrateur à l'imprimante. Ensuite, configurez une passerelle par défaut puis le nom d'hôte. Le reste sera configuré avec le serveur web intégré à l'imprimante.

Outil d'administration par le web de la carte HP JetDirect

L' outil d'administration a six entrées de menus disponibles :

1.6 Impression de Linux vers JetDirect

Pour pouvoir imprimer depuis Linux sur le serveur d'impression JetDirect, une entrée a été ajouté dans le fichier /etc/printcap. J'ai créé un nouveau répertoire de spool appelé /usr/spool/lj4050n mais le défaut /usr/spool/lpd devrait plutôt être utilisé. Le répertoire /usr/spool est un lien dynamique vers /var/spool.

Ce qui suit est un listage du fichier /etc/printcap qui fut utilisé pour communiquer avec le serveur d'impression JetDirect :


# HP Laserjet 4050n

lp|lj4050n:\
        :lp=/dev/null:sh:\
        :mx#0:\
        :sd=/usr/spool/lj4050n:\
        :rm=e328-laser.domainname.com:rp=text:

Où :

1.7 Configurer Windows pour les imprimantes partagées Linux

Depuis le Voisinage Réseau, double-cliquez sur l'icône de l'imprimante partagée par le serveur Linux. Windows demandera alors de configurer l'imprimante. J'ai partagé le CD de configuration de l'imprimante sur le serveur Linux et parcouru le dossier disk1 pour trouver le fichier .INF de l'imprimante. L'installation/configuration de l'imprimante s'arrêtera en affichant un message dans le genre "Ne peut trouver le disque 2" : passez juste dans le répertoire supérieur et sélectionnez le dossier disk2, cela terminera l'installation, et vous aurez fini. En général, j'envoie la page de test pour s'assurer que tout fonctionne bien.

La procédure d'installation normale est d'exécuter le setup depuis le CD, mais en général cela installe plusieurs méga octets de données sur le client, ce qui n'est pas ce que je désirais. Je voulais juste le pilote d'impression, et j'ai trouvé que la méthode ci-dessus donne une configuration rapide, propre et simple de l'imprimante.

1.8 En bref...

Il fut étonnamment simple de configurer SAMBA et de le voir s'accorder avec les objectifs du labo. La première fois que j'ai lancé SAMBA, ça ne m'a pas pris plus de dix minutes pour le faire communiquer avec Win95. Ce fut très étonnant, car je n'avais aucune expérience de SAMBA. Lors de la configuration de l'environnement informatique du labo, j'ai rencontré quelques problèmes ; certains embêtants, certains nécessitant un peu de recherche pour en venir à bout, mais tous furent résolus.

Un exemple de problème embêtant était d'avoir le répertoire [home] qui s'affichait comme un partage, sur un poste client. Il était identique au répertoire "home" du poste client. Ce fut résolu en ajoutant "Browseable = No" dans la section "Global" du fichier /etc/smb.conf.

Le problème le plus frustrant fut de constater que le fichier smbpasswd ne pouvait pas être automatiquement constitué d'après le fichier shadow. La machine me demande toujours un nom de compte et mot de passe chaque fois que j'essaye de me connecter sur un partage réseau ; toute la documentation m'indiquait que je faisais tout bien comme il fallait. L'utilisation du programme smbpasswd pour entrer manuellement les mots de passe de chaque utilisateur résolu le problème. Je suis sûr qu'il y a un moyen de faire cela automatiquement, car ça ne serait pas acceptable s'il y avait plus que mes 10 comptes utilisateurs génériques.

Tout compte fait, je fut capable de configurer le réseau plus rapidement et plus facilement que si j'avais utilisé un serveur NT, et le serveur Linux est totalement transparent à l'utilisateur. Un détail intéressant : ça m'a pris plus de temps pour écrire cet article que pour configurer le réseau.

Copyright 1999, Eugene Blanchard. Paru dans le numéro 48 de la Linux Gazette de Décembre 1999.

Traduction française de Christophe Pernod.


Page suivante Page précédente Table des matières