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 :
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
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 /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 SMBLa 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 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.
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.
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 :
Affiche l'état courant de l'imprimante, y compris des statistiques réseau
Affiche la version courante du matériel et logiciel, le nom réseau, l'adresse IP, etc...
Permet la configuration TCP/IP (protocole par défaut),IPX/SPX, DLC/LLC, Ethertalk et SNMP.
Permet de changer le mot de passe administrateur et le nom de communauté SNMP.
Affiches des statistiques et diverses informations sur TCP/IP, IPX/SPX, DLC/LLC, Ethertalk, l'imprimante et JetDirect.
Vous emmène sur le site support HP.
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ù :
indique l'imprimante par défaut "lp" avec un alias/description "lj4050n". S'il y avait un espace dans l'alias, ce serait détecté comme une description.
indique que l'imprimante n'est pas connecté à un port physique
indique qu'il n'y a pas de taille maximum de fichier à envoyer à cette imprimante
indique le chemin des fichiers de spool
indique le nom de domaine de l'imprimante pour envoyer les travaux d'impression et sous quel format les envoyer. les choix sont texte ou brut pour imprimantes HP. J'ai constaté que l'imprimante est assez intelligente pour detecter elle-même si c'est du texte, du postscript ou du PCL.
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.
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.