[ Table of Contents ] [ Front Page ] [ Prev ] [ Linux Gazette FAQ ] [ Next ]

"Linux Gazette...rendre Linux juste un peu plus fun !"


SAMBA, Win95, NT et HP Jetdirect

Par Eugene Blanchard


J'utilise un laboratoire de routage pour enseigner les concepts fondamentaux du routage sur des équipements propriétaires.

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 etr reconfigurés. Il sembla qu'en exécutant les services SAMBA, le serveur Linux serait transparent aux clients et permetterait une installation minimaliste.

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


Installation de SAMBA

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

Positionnez-vous sur le cd, répertoire /slakware/N11. Tapez pkgtool puis "Install packages from current directory". Pour les autres distributions, cet article assumera 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 à travers le réseau. Le nouveau nom d'SMB est CIFS ("Common Internet File System", système de fichier commun pour 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" permettera 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

Le 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 :

# parametres 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 "voisinnage 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	# accelère la convergence de netbios
	os level = 33			# Gives a higher browse master "priority"
	preferred master = Yes		# This server is the browsemaster
	guest account = pcguest		# nom du compte "invité"
	hosts allow = 192.168.1. 127.	# réseaux authorisés à accéder à ce serveur par SMB
La section Shares s'occupe du partage des répèrtoires. Par exemple :

[homes]
	comment = Home Directories	# comment shown in Win's Network Neighborhood detail view
	path = %H			# automatically display user's home directory as SMB share
	valid users = %S		# Only user is allowed to access this directory
	read only = No			# can read/write
	create mask = 0750		# permissions given when creating new files
	browseable = No			# only show user's home directory not "homes" folder

[public]
	comment = Public Files		# comment shown in Win's Network Neighborhood detail view
	path = /home/ftp/pub		# path to public directory
	guest ok = Yes			# anyone can access this directory

[cdrom]
	comment = Cdrom on E328-00	# comment shown in Win's Network Neighborhood detail view
	path = /cdrom			# path to cdrom drive
	guest ok = Yes			# anyone can access cdrom drive, public share

The Printers section deals with sharing printers. For example:

[lp] 
	comment = E328-Laser		# comment shown in Win's Network Neighborhood detail view
	path = /var/spool/samba		# path to spool directory
	print ok = Yes			# allowed to open, write to and submit to spool directory

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


Execution de SWAT

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

Execution 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 vriament important excepté qu'il doit
être sous 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, pointez juste votre navigateur préféré sur 
http://localhost:901

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

Un nom d'utilisateur et mot de passe vous seront demandé à 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 plutot auto-explicatifs, et il y a d'excellents écrans d'aide. Voici un résumé rapide des menus :

Tout changement dans la 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 l'arrêt/marche de ces serveurs.

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


Noms d'utilisateurs

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

Note : Pour la Slackware, le répèrtoire de SAMBA est /usr/lib et non le répèrtoire 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,  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, 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 le 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. Coup de chance, cela ne m'a fait que 10 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, je fut capable de me trouver dans le voisinage réseau, et d'ouvrir les partages Linux sans devoir entrer un nom d'utilisateur et mot de passe.


Configuration de la carte HP JetDirect sous Linux

Faire marcher la carte HP JetDirect sous Linux fut étonnement simple. La carte HP JetDirect est un serveur d'impression pour l'imprimante HP 4050N. Le premier pas est de configurer la carte 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 du site HP : http://www.hp.com/support/net_printing. J'ai choisi de le faire manuellement en utilisant telnet et le serveur web inclu sur la carte HP JetDirect.

Acceder par telnet à la carte JetDirect

Pour acceder 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 pannonceau de commande : selectionnez "JetDirect Menu" avec le boutton Menu et déroulez les options pour arriver à la configuration réseau. Après avoir entré l'adresse IP, configurez le masque 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  
 
        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 à l'administrateur de l'imprimante. Ensuite, configurez une passerelle par défaut puis le nom d'hôte. Le reste sera configuré avec le serveur web incorporé à l'imprimante.

L'outil d'administration par le web HP JetDirect

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


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. Jai créé un nouveau répèrtoire de spool appelé /usr/spool/lj4050n mais le defaut /usr/spool/lpd devrait plutot ê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ù :


Configurer Windows pour les imprimantes partagées Linux

Depuis le voisinnage 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épèrtoire supérieur et selectionnez le dossier disk2, cela terminera l'installation,et vous aurez terminé. 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'executer le setup depuis le CD, mais en général cela installe plusieurs mega-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 rapide, propre et simple configuration d'imprimante.


En bref...

Il fut étonnement 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 faut. 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 a plus de 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 interessant : ça m'a pris plus de temps pour écrire cet article que pour configurer le réseau.


Copyright © 1999, Eugene Blanchard
Published in Issue 48 of Linux Gazette, December 1999


[ Table of Contents ] [ Front Page ] [ Prev ] [ Linux Gazette FAQ ] [ Next ]