Misfu, le site des cours Informatique/Bureautique/Mathematiques


 

SAMBA et le protocole SMB


Samba est une application qui permet d'utiliser sous Linux le protocole SMB (« Session Message Block ») également appelé le protocole NetBIOS ou LanManager.


NetBIOS est historiquement le premier protocole réseau utilisé pour partager des fichiers entre micros. Il a été conçu par IBM et a trouvé sa première utilisation avec Windows for Workgroup de Microsoft. NetBIOS existe sur trames 802.3 (natif) ou encapsulé (enrobé/emballé) dans les trames TCP/IP comme dans le cas de Samba.
Le protocole utilise un fonctionnement peu courant, où chaque machine possède un nom et tient à jour une table avec les noms et les adresses des autres machines. La couche ISO/ISO N° 3 (réseau) n'étant pas utilisé, le protocole n'est pas routable. Il faut donc utiliser la diffusion brodcast TCP/IP dans le cas d'une encapsulation.


Le protocole SMB est utilisé par Microsoft Windows pour partager des disques et des imprimantes. En utilisant les outils Samba d'Andrew Tridgell, les systèmes Unix (Linux inclus) peuvent également partager des disques et des imprimantes avec des hôtes Windows.


Avec Samba, on peut :


- Partager un disque Linux pour des machines Windows ;

- Accéder à un disque Windows depuis une machine Linux ;

- Partager une imprimante Linux pour des machines Windows ;

- Utiliser une imprimante Windows à partir d'un hôte Linux.


NetBIOS peut supporter les applications dites réparties. Une ressource spéciale IPC$ existe, permettant d'utiliser la communication inter-processus.


D'une manière générale, chaque ressource porte un nom unique sur chaque serveur. C'est ce que l'on appelle le nom de partage. S'il existe plusieurs serveurs, il faut utiliser le nom réseau.


Encore appelé nom complet, le nom réseau d'une ressource est composé du nom du serveur et du nom de la ressource. Par exemple Gravagecgrav est la ressource cgrav du serveur Gravage.


Sur la plupart des distributions, Samba se présente sous la forme d'un ou de deux paquetages et comporte deux daemons et un ensemble d'utilitaires binaires.

Les deux daemons sont généralement installés dans le répertoire /usr/sbin et sont lancés au démarrage ; ce sont :


- smbd - le daemon SMB ;


- nmbd - ce daemon propose le support du serveur de nom NetBIOS aux clients.


En général, les autres binaires Samba sont installés dans /usr/bin, bien que leur emplacement peut varier d'une distribution à l'autre. Le tableau ci-dessous récapitule ces binaires.


utilitaire/binaire

Description

smbclient

Client SMB pour machines Unix ;

smbprint

Script pour imprimer sur l'imprimante d'un hôte SMB

smbprint.sysv

Script pour imprimer sur l'imprimante d'un hôte SMB mais pour des Unix SVR4

smbstatus

Utilitaire qui liste les connexions SMB présentes sur localhost

smbrun

Script pour faciliter le lancement d'applications sur des hôtes SMB.

testparm

Vérificateur de syntaxe pour le fichier de configuration smb.conf

nmblookup

Permet d'effectuer des requêtes sur les noms NetBIOS depuis un hôte UNIX

smbpasswd

Outil pour changer les mots de passe pour Samba et les serveurs Windows NT


Installation


Avec les distributions récentes, tout le nécéssaire est fourni, mais pas nécessairement installé. Pour vérifier si le(s) paquetage(s) est (sont) installé(s), il faut procéder comme suit :


# rpm -qa | grep samba

samba-common-x.x.xx-xxmdk

samba-x.x.xx-xxmdk


C'est ce que l'on obtient sous la Mandriva lorsque samba est déjà installé. Sous d'autres distributions, il se peut que l'on n'obtienne que ce qui suit lorsque samba est déjà installé :


# rpm -qa | grep samba

samba-x.x.xx-xx


Note 1: On peut obtenir les paquetages de samba sur l'un des deux principaux sites suivants :

·sur le site SAMBA (http://fr.samba.org) pour les derniers sources

·sur le site RUFUS (http://rufus.w3.org) pour les derniers RPMS

Une fois SAMBA installé, il faut vérifier que l'on peut lancer les deux daemons et que l'on peut demander à voir leur statut ( en cours d'exécution ou arrêtés) :


#/etc/rc.d/init.d/smb start

Starting SMB services:

Starting NMB services:

On lance les deux démons nécessaires au fonctionnement de SAMBA. (Même si SAMBA est déja lancée, normalement, il ne devrait pas y avoir d'erreur...)

# /etc/rc.d/init.d/smb status

smbd (pid 970) is running...

nmbd (pid 972) is running...


Vous devez voir apparaitre les deux dernières lignes.

Note 2: Dans de nombreux cas, lorsque vmware est installé sur une machine, on constate que le daemon smbd refuse de se lancer et l'on observe dans le fichier /var/log/syslog deux lignes qui ressemblent à ce qui suit :


smbd[5774]: bind failed on port 139 socket_addr=0.0.0.0.

smbd[5774]: Error = Address already in use.


Voici comment on procède pour vérifier cet état de choses sous la Mandriva :


# service smb restart

Arrêt des services SAMBA: [erreur]

Arrêt du service NMB : [OK]

Lancement du service SAMBA: [OK]

Lancement du service NMB : [OK]


# service smb status

smbd est arrêté

nmbd (pid 5870) est en cours d'exécution ...

# tail -30 /var/log/syslog

....

smbd[5774]: bind failed on port 139 socket_addr=0.0.0.0.

smbd[5774]: Error = Address already in use.

....


# lsof -iTCP:139

vmware-sm 2263 root 8u Ipv4 14395 TCP


Pour arrêter momentanément le daemon vmware, il faut taper la commande :


# service vmware stop


Pour l'empêcher de se lancer au démarrage du système, il faut taper la commande :


# chkconfig --level 5 vmware off


Rappel : les commandes suivantes sont équivantes :


# /etc/rc.d/init.d/smb

# service smb


Note 3: Sur la distribution Mandriva Samba est programmé pour se lancer automatiquement au démarrage du système et en utilisant init sys V.


Si ce n'est pas le cas sur votre distribution favorite et si cette dernière utilise les fichiers /etc/rc.d/init.d/* et dispose de la commande chkconfig, vous pouvez procéder à cette programmation en procédant comme suit, sachant que SAMBA ne doit pas fonctionner dans les niveaux d'exécution 0, 1, 2 et 6 (dans ces niveaux d'exécution le réseau n'est pas activé) :


# chkconfig --level 0126 smb off

# chkconfig --level 345 smb on


Configuration générale (/etc/smb.conf)


La configuration de Samba sur une machine Linux (ou sur un autre Unix) est contrôlée par un seul fichier, smb.conf. Cependant, le nom par défaut de ce fichier de configuration est déterminé au moment de la compilation de l'outil samba. Dans beaucoup de cas, c'est /etc/smb.conf. Mais sur la Mandriva, avec le package samba-x.x.xx, le fichier opérationnel est /etc/samba/smb.conf. Ce fichier indique quelles ressources système on désire partager avec le monde extérieur, et quelles restrictions on veut mettre dessus.


Un fichier smb.conf standard se compose de plusieurs sections contenant chacune des paramètres.


Il existe quelques 130 paramètres globaux et environ 100 paramètres associés aux partages. Mais seuls quelques uns sont nécessaires à la configuration d'un serveur simple.


A quelques exceptions près, les valeurs des paramètres sont réparties dans les trois catégories suivantes :


- chaînes de caractères ; la casse est conservée.

- valeur booléenne acceptant des conditions vrai/faux (yes/no, true/false ou 1/0). La casse des valeurs est indifférentiée.

- valeur numérique. Il est conseillé de vérifier la base de chaque paramètre pour savoir s'il s'agit d'un nombre en base décimale ou d'une valeur octale (exemple mode create).


Les paramètres se présentent sous la forme name = valeur. Exemple :


netbios name = JUPITER


Pour la plupart des paramètres, une valeur par défaut est associée à chaque paramètre. Autrement dit lorsqu'un paramètre n'est pas indiqué dans le fichier smb.conf, c'est sa valeur par défaut qui est utilisée.


Le lecteur trouvera en annexe un tableau récapitulatif des paramètres les plus utilisés par section et une description plus détaillée de quelques paramètres « délicats ».


Chaque section (ou partie) du fichier commence par une entête, comme par exemple [global], [homes], [printers], etc...


La section [global] définit quelques variables communes pour le partage de toutes les ressources.

La section [homes] permet à un utilisateur distant Windows ou autre d'accéder à son répertoire d'accueil encore appelé répertoire personnel (et uniquement au sien) sur la machine Linux locale. Ceci suppose qu'il doit posséder un compte sur l'hôte Linux.


Le fichier smb.conf suivant donné en exemple permet à des utilisateurs distants d'accéder à leur répertoire home sur la machine locale et d'écrire dans un répertoire temporaire.


; /etc/smb.conf


; Assurez vous de relancer le serveur après avoir fait des changement , dans ce fichier. Par exemple~:


; /etc/rc.d/init.d/smb stop

; /etc/rc.d/init.d/smb start


[global]

; décommentez cette ligne si vous désirez autoriser les invités (comptes

; 'guest') à se connecter

; guest account = nobody

log file = /var/log/samba-log.%m

lock directory = /var/lock/samba

share modes = yes


[homes]

comment = Répertoire homes

browseable = no

read only = no

create mode = 0750


[tmp]

comment = Espace disque temporaire

path = /tmp

read only = no

public = yes


[public]

comment = Partage public

path = /home/public

public = yes

writable = yes

printable = yes


La section [public] est un clone de la section [tmp] et permet de partager le répertoire public appelé /home/public. C'est la façon classique de partager un lecteur Linux avec des machines windows.


Pour que le répertoire ci-dessus soit en lecture pour tout le monde mais uniquement en écriture pour les personnes du groupe staff, il faut modifier l'entrée comme ci-dessous :


[public]

comment = Partage public

path = /home/public

public = yes

writable = yes

printable = no

write list = @staff


Partager un répertoire Windows pour des machines Linux


Un client SMB pour un hôte Unix est inclus dans la distribution de Samba. Il fournit une interface semblable au ftp, en ligne de commande. On peut utiliser cette utilitaire pour transférer des fichiers entre un « serveur » Windows et un client Linux.


Pour voir ce que partage une machine donnée c'est-à-dire lister les ressources disponibles sur un serveur distant, utiliser :


/usr/sbin/smbclient -L hôte


où « hôte » est le nom NetBIOS de la machine dont on veut voir les partages. On obtient une liste des « services » en partage, c'est-à-dire le nom des répertoires ou des machines qu'il partage pour vous. A moins que le serveur SMB n'ait aucune protection, il vous sera demandé un mot de passe qui correspond à celui enregistré dans windows.. On peut utiliser le mot de passe pour le compte d'invité ou pour son compte personnel sur cette machine.


Par exemple :


smbclient -L zimmerman


Ce qui devrait donner quelque chose comme ceci :


Server time is Sat Aug 10 15:58:27 1996

Timezone is UTC+10.0

Password:

Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51]

Server=[ZIMMERMAN] User=[] Workgroup=[WORKGROUP] Domain=[]

Sharename Type Comment

--------- ---- -------

ADMIN$ Disk Remote Admin

public Disk Public

C$ Disk Default share

IPC$ IPC Remote IPC

OReilly Printer OReilly

print$ Disk Printer Drivers


This machine has a browse list:

Server Comment

--------- -------

HOPPER Samba x.x.xp8

KERNIGAN Samba x.x.xp8

LOVELACE Samba x.x.xp8

RITCHIE Samba x.x.xp8

ZIMMERMAN


La « browse list » (liste des machines) montre quels sont les autres serveurs SMB partageant des ressources sur le réseau.


Pour utiliser le client, lancer:


/usr/sbin/smbclient service


où « service » est une machine et un nom de partage. Par exemple, si vous essayez d'accéder à un répertoire en accès public sur une machine appelée zimmerman, le service sera nommé zimmermanpublic. Néanmoins, à cause des restrictions de l'interpréteur de commandes (le shell), vous allez devoir redoubler les backslashs, pour obtenir la ligne suivante :


$ /usr/sbin/smbclient zimmermanpublic mon_mot_de_passe


où « mon_mot_de_passe » est votre mot de passe écrit tel quel.

Vous allez obtenir la ligne de commande suivante :


Server time is Sat Aug 10 15:58:44 1996

Timezone is UTC+10.0

Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51]

smb: >


Tapez « h » pour obtenir de l'aide sur smbclient :


smb: > h

ls dir lcd cd pwd

get mget put mput rename

more mask del rm mkdir

md rmdir rd prompt recurse

translate lowercase print printmode queue

cancel stat quit q exit

newer archive tar blocksize tarmode

setmode help ~? ~!

smb: >


La syntaxe suivante est préférable parce qu'elle ne fait pas apparaître le mot de passe en clair à l'écran :


$ /usr/sbin/smbclient zimmermanpublic -U nom_utilisateur


Autre syntaxe intéressante : $ /usr/sbin/smbclient -L nom_serveur -N</font>


Les pages des manuels de ftp et de smbclient sont très similaires.


Une autre solution plus agréable consiste à utiliser smbmount qui permet de monter des ressources SMB de la même manière que NFS ou votre lecteur de cdrom.


Pour procéder à la manipulation, il faudra inclure le support du système de fichiers SMB dans la configuration de votre noyau. Ensuite, il faut récupérer les utilitaires smbfs sur un site miroir sunsite comme ftp.lip6.fr/pub/linux/sunsite/system/filesystem/smbfs.


La commande smbmount s'utilise avec la systaxe suivante :


smbmount //nomduserveur/ressource /pointdemontage [-o options]


Partager une imprimante Linux pour des stations Windows


Pour partager une imprimante Linux pour des stations Windows, il faut s'assurer que l'imprimante est configurée pour fonctionner sous Linux. Si vous savez imprimer depuis Linux, la mise en place d'un partage de l'imprimante par SMB est quasi-automatique.


Ajouter la configuration d'impression à votre smb.conf comme dans l'exemple ci-dessous :


[global]

printing = bsd

printcap name = /etc/printcap

load printers = yes

log file = /var/log/samba-log.%m

lock directory = /var/lock/samba


[printers]

comment = Toutes les imprimantes

security = server

path = /var/spool/lpd/lp

browseable = no

printable = yes

public = yes

writable = no

create mode = 0700


[ljet]

security = server

path = /var/spool/lpd/lp

printer name = lp

writable = yes

public = yes

printable = yes

print command = lpr -r -h -P %p %s


Assurez vous que le « path » (dans cet exemple, à l'intérieur de la section [ljet]) corresponde au répertoire de spool défini dans /etc/printcap !


Partager une imprimante Windows pour des clients Linux


Pour partager une imprimante sur une machine Windows, il faut suivre les points suivants :


1. Il faut avoir les entrées correspondantes à l'imprimante dans /etc/printcap et elles doivent correspondre à la structure locale des répertoires (pour le répertoire de spool, etc...).


2. Il faut avoir le script /usr/bin/smbprint. Il est fourni avec les sources de Samba, mais pas avec toutes les distributions binaires. Une version légèrement modifiée de ce script est présentée dans le SMB-HOWTO (voir notre bibliographie en fin de dossier).


3. Si on veut convertir des fichiers ASCII en Postscript, il faut avoir nenscript, ou équivalent. nenscript est un convertisseur Postscript et se trouve généralement dans /usr/bin.


4. Vous voudrez peut-être simplifier l'impression à l'aide de Samba en utilisant une interface simple d'emploi. Un script simple, écrit en perl, pour gérer l'ASCII ou le PostScript est présenté dans le SMB-HOWTO.


Outils graphiques d'administration de Samba


Dans cette partie, nous décrivons brièvement deux outils graphiques d'administration de samba sous Linux. Il s'agit de swat et de Webmin. Une description détaillée sort du cadre de ce dossier. Il s'agit de fournir suffisamment d'informations afin que toute personne intéressée puisse les installer et les lancer pour enfin les découvrir par la pratique. Notons toutefois que nous reviendrons ultérieurement sur Webmin dans un dossier consacré aux outils graphiques d'administration Linux.


SWAT


Abréviation de Samba Web Administration Tool, SWAT est une fonctionnalité de Samba. Il s'agit d'un serveur web miniature et d'une application de scripts CGI exécutable à partir du processus inetd (ou sa variante plus évoluée xinetd) donnant accès au fichier smb.conf du système sur lequel il tourne.
Pour en savoir plus sur inetd ou xinetd, entrer man inetd ou man xinetd.


SWAT permet à une personne disposant de droits appropriés (et du mot de passe de root) de configurer tous les aspects de Samba à partir de pages Web. A chaque page, il propose également des liens d'aide pour toutes les options de configuration du fichier smb.conf.


Sous la Mandriva le package à installer porte le nom de samba-swat-x.x.x-xmdk.rpm. Après son installation qui ne pose aucun problème particulier (rpm -Uvh samba-swat-x.x.xx-xxmdk), il faut passer par les étapes suivantes :


1°) Créer le fichier /etc/pam.d/samba et y éditer les deux lignes qui suivent :


auth required /lib/security/pam_pwdb.so nullok shadow

account required /lib/security/pam_pwdb.so


2°) Editer les fichiers suivant et y ajouter respectivement les lignes qui suivent afin de sécuriser son serveur samba :


Dans /etc/hosts.deny :


swat: ALL


Dans /etc/hosts.allow :


swat: LOCAL,


Remplacer par l'adresse IP appropriée que vous souhaitez autoriser en accès à vos partages.


3°) relancer le daemon xinetd par la commande :


service xinetd restart


Une fois la procédure terminée, on peut accéder à SWAT à partir de son navigateur habituel. Pour ce faire, il faut visiter le port 901 de son serveur Samba, en entrant http://root@localhost:901/. Le navigateur contacte SWAT et propose une boîte de dialogue d'authentification dans laquelle il suffit d'entrer le mot de passe de root.


Note importante: L'utilisation de swat réserve parfois des surprises désagréables. C'est pourquoi il est fortement conseillé, après l'utilisation de swat, de procéder à une relecture de son fichier smb.conf ou de le tester à l'aide de l'utilitaire :



testparm


Ainsi, par exemple l'auteur de ce dossier a été confronté au fait que swat définit le paramètre smb passwd file avec une valeur à blanc comme suit :


smb passwd file =


Malheureusement un tel champ à vide dans le fichier smb.conf plante le daemon smbd.


Webmin


Webmin est un outil graphique d'administration Web pour les systèmes UNIX. Il permet de gérer Samba, de définir des comptes, de configurer le DNS, Apache et sendmail, et d'effectuer beaucoup d'autres tâches d'administration système.


Webmin se compose d'un serveur Web miniature développé en Perl et d'un ensemble de programme CGI prenant en charge les transferts de données de configuration système sur le web.


Notons tout de même qu'il ne prend pas en charge les partages de fichiers qui comprennent des tirets, ni les fichiers smb.conf contenant des paramètres include.


Annexes : A - Les paramètres les plus utilisés (par section)


Les paramètres de la section [global]


Paramètre

Exemple de valeur

Description

netbios name

JUPITER

Permet de spécifier le nom netbios du serveur samba. Le nom netbios est visible dans le voisinage réseau des PC sous windows. Si le nom netbios n'est pas spécifié, le serveur Linux prendra comme nom netbios son nom réseau.

workgroup

WORKGROUP

Permet de spécifier le nom du groupe de travail. Il faut savoir que c'est plus agréable de mettre un nom connu de vos machines Win$$$. Par exemple vous pouvez laisser WORKGROUP

serveur string

Serveur Libre Linux/Samba

Permet de spécifier le nom du serveur. C'est un commentaire Serveur Libre Linux/Samba.

security

SHARE

Permet de choisir, à l'instar de windows une gestion de sécurité par utilisateur (user : chaque utilisateur est obligé d'avoir un compte sur le serveur Linux) ou par serveur (share : le serveur ne gère pas les utilisateurs et ne partage que des ressources identiques pour tout le monde). Choisir le mode SHARE : c'est le mode de fonctionnement de Win$$$ 9$


Les paramètres des partages de type HOMES


Paramètre

Exemple de valeur

Description

interfaces

(rien)

Permet de spécifier les adresses IP des interfaces réseau dans le cas d'une utilisation de plusieurs périphériques. Indiquer les adresses IP des interfaces qui serviront à établir la liaison entre SAMBA et les machines clientes ainsi que le masque réseau (par exemple, si vous avez deux cartes ethernet - adresses 192.168.1.1 et 192.168.2.1 connectées respectivement aux réseaux 192.168.1.0 et 192.168.2.0 - mettez 192.168.1.1/24 192.168.2.1/24. Si vous n'avez qu'une seule carte ethernet, vous pouvez ne rien mettre, SAMBA la trouvera tout seul)

guest ok

NO

les invités ne sont pas autorisés dans les répertoires maison (home). Si vous souhaitez les autoriser, mettez Yes, mais ce n'est pas très logique.

create mask

750

La meilleure valeur est 0750 qui signifie que seul l'utilisateur aura le droit de lire et écrire et que seuls les utilisateurs appartenant au groupe pourront lire les fichiers qui seront créés dans ce répertoire par le biais de SAMBA.

available

YES

Sans commentaire (Pourrait-il en être autrement ?)

encrypt password

YES

Permet de spécifier si on veut utiliser des mots de passe encryptés ou non. Il faut savoir que tous les windows ou presque utilisent un système différent. Choisir (sauf cas très particuliers... Win$$$ 95 avant l'OSR2 et ses bogs multiples de sécurité etc...)

guest account

ftp

Mettre ftp ou un nom d'utilisateur valide sur son système : ce sera le compte sur lequel seront connectés les invités si on les autorise. Il faut donc mettre un compte qui possède très peu de droit comme ftp ou nobody

hosts allow

192.168.1.

Permet de définir quelles adresses IP sont autorisées à se connecter au serveur samba. Mettre les adresses IP des machines ou des réseaux séparées par des espaces. Par exemple pour autoriser les machines du réseau 192.168.1.0 taper 192.168.1.(le point final est important). Vous pouvez autoriser toutes les machines de ce réseau sauf 192.168.1.10 en tapant : 192.168.1. EXCEPT 192.168.1.10


hosts deny

ALL

Mettre les adresses IP des machines auxquelles on souhaite interdire l'accès au serveur SAMBA par exemple : ALL pour interdire tout le monde sauf les machines autorisées par . (Ici aussi le mot clef EXCEPT fonctionne). Voir aussi la note précédente.

character set

ISO8859-1

Si vous utilisez Win$$$ en France (avec des accents par exemple), mettez ISO8859-1.

Note : Normalement, dans ce cas vous devez aussi fixer la valeur de client code page à 850 (la code page par défaut de Win$$$ en france) dans la Advanced view de SWAT.


Les paramètres des autres types de partages


Paramètre

exemple de valeur

Description

Comment

Le beau partage

path

/c:

Ce doit être le chemin complet d'un répertoire accessible par l'utilisateur smbuser et/ou le groupe smbusers

guest account

ftp

Permet de spécifier le nom d'un utilisateur invité. Il est impératif d'ajouter ledit utilisateur au système. Si vous souhaitez autotoriser les accès aux invités, vous devez spécifier ici un utilisateur ayant très peu de droit comme l'utilisateur ftp sur un système Linux de base.

valid users

bcassoc albert daouda

Entrer la liste (séparée par des espaces) des utilisateurs qui auront le droit de se connecter à cette ressource.

force user

smbuser

Entrer le nom sous lequel nous nous connectons aux ressources partagé par SAMBA (vous pouvez ne rien mettre, en ce cas l'utilisateur qui se connectera le sera avec tous ses droits).

force group

smbusers

Idem que ci-dessus

read only

NO

Mettre Yes si vous voulez empêcher l'accès en écriture. (Nous vous conseillons de créer deux noms par ressource : un premier interdisant les écritures, dont beaucoup d'utilisateurs auront les droits d'accès - ie: par valid users - , et un second autorisant les écritures mais à un minimum d'utilisateurs - ayant des mots de passe !)

guest ok

NO

Mettre Yes si vous souhaitez autoriser des invités à accéder à cette ressource.

browseable

YES

Permet d'autoriser ou non le parcours du répertoire. Mettez No si vous souhaitez cacher cette ressource lors de l'affichage par le voisinage réseau de Win$$$

available

YES

Pour partager une ressource, celle-ci doit être disponible.

writable

YES

Permet d'autoriser ou non l'écrituredans le répertoire.


Les paramètres de configuration de serveur d'impression


Paramètre

exemple de valeur

Description

comment

Les belles imprimantes

path

/var/spool/lpd/lp

Mettre un répertoire qui devra être accessible à l'utilisateur connecté à cette ressource : par exemple vous pouvez mettre n'importe quel répertoire qui est accessible en écriture par tout le monde – par exemple /tmp)

guest account

rien

Ne rien mettre ou mettre un utilisateur qui a le droit d'imprimer (sinon mettre guest ok à false).

guest ok

True

on va imprimer en tant qu'invité.

available

True


Les variables de Samba


Variable

Définition

Variables du client

%a

Architecture du client. Par exemple : Win95, WinNT, Samba, ...

%l

Adresse IP du client

%m

Nom NetBios du client

%M

Nom DNS du client

Variables utilisateur

%g

Groupe primaire de l'utilisateur %u

%H

Répertoire home de l'utilisateur %u

%u

Nom de l'utilisateur unix courant

Variables de partage

%P

Racine du partage actuel

%S

Nom du partage actuel

Variables du serveur

%h

Nom DNS du serveur samba

%L

Nom NetBios du serveur samba

%v

Version de Samba

Variables diverses

%T

La date et l'heure courantes


Annexes : B - Les paramètres « délicats »


Niveau de nom d'utilisateur et de mots de passe


Certains clients transmettent les noms d'utilisateurs en capitales (par exemple KENOBI). Par défaut, Samba recherche le nom d'utilisateur en minuscules (par exemple kenobi) et, s'il demeure introuvable, il le fait commencer par une lettre capitale (par exemple Kenobi). Cette méthode n'est pas adaptée au traitement des noms d'utilisateurs UNIX combinant majuscules et minuscules, comme par exemple KeNobi.


Un paramètre permet de spécifier la quantité maximale de majuscules dans le nom d'utilisateur. Samba tente ensuite de découvrir le nom de l'utilisateur en permutant les lettres capitales de 1 à la valeur définie.


Supposons que nous ayons :


username level = 4


Si la chaîne transmise est KENOBI, Samba tente de localiser les noms suivants dans le fichier des noms de de passe : kenobi, Kenobi, kEnobi, keNobi, keNobi, kenObi, kenoBi, kenobI, KEnobi, KeNobi, KenObi, Kenobi, etc.


Les mots de passe en texte brut posent les mêmes problèmes que ceux de la casse des noms d'utilisateurs. Le paramètre de niveau de mot de passe se comporte comme le paramètre nom d'utilisateur, à ceci près qu'il utilise le mot de passe de deux façons, comme s'il était envoyé tout en minuscules par le client. Sur la plupart des systèmes, un niveau égal à 8 signifie que la casse est indifférenciée. Un niveau de 4 est raisonnable.


password level = 4


Chiffrement des mots de passe


Samba supporte les algorithmes de chiffrement de mots de passe SMB de LanManager et de Windows. Certains aspects du chiffrement des mots de passe UNIX sont communs aux systèmes Microsoft. Par exemple les hachages des mots de passe LanMan et NT sont irréversibles comme pour les systèmes UNIX.


Toutefois les algorithmes de chiffrement des mots de passe d'UNIX et de LanMan/NT présentent une différence importante : l'algorithme de Microsoft crée les mots de passe par équivalence de texte brut c'est-à-dire qu'à valeur d'entrée égale, valeur de sortie égale.


Voici quelques points qui devraient aider à opter pour le chiffrement ou le texte brut :


·Grâce aux mots de passe en texte brut, Samba se réfère toujours à la même base de mots de passe (/etc/passwd). Samba ne transmet jamais de mots de passe en texte brut si des informations de comptes n'ont pas été préalablement envoyés sur le réseau.


·Les mots de passe en texte brut limitent les ressources requises aux fichiers système UNIX standard.


·Windows NT n'apprécie guère les mots de passe en texte brut et ne permet pas d'explorer les serveurs ne prenant pas en charge le chiffrement.


·La synchronisation de smbpasswd et de unix passwd est parfois difficiule.


·Pour activer le chiffrement des mots de passe, qui est inactif par défaut, il faut définir le paramètre encrypt passords dans le fichier smb.conf :


encrypt passwords = yes


Dans ce cas, il faut alors tenir à jour un second fichier de compte, appelé smbpasswd et stocké dans le sous-répertoire private du répertoire d'installation de Samba, où LanMan et NT stockent les versions chiffrées des mots de passent utilisateur.


·Pour modifier l'emplacement ou le nom par défaut du fichier des mots de passe, il faut utiliser le paramètre smb passwd file. La valeur doit être un chemin d'accès absolu au fichier comme ci-après :


smb passwd file = /etc/smbpasswd


Un grand nombre de comptes UNIX rend la création d'un fichier de mots de passe SMB et la définition des mots de passe fastidieuses. Mais il existe une solution exigeant qu'une entrée smbpasswd soit créée pour chaque utilisateur. Il s'agit du script shell mksmbpasswd.sh utilisé comme dans la commande qui suit :


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


·Le fichier de configuration /etc/samba/smb.conf est prévu pour la gestion des mots de cryptés (les deux paramètres encrypt passwords = yes et smb passwd file = /etc/samba/smbpasswd y sont définis). Au cas où le chiffrement des mots de passe ne correspond pas à votre choix, n'oubliez pas de mettre ces deux paramètres en commentaires.


L'ordre de résolution des noms :


La résolution des noms par le serveur Samba peut se faire de différentes manières. Le paramètre « name resolve order » définit l'ordre dans lequel s'effectue cette résolution. Il s'agit d'une liste pouvant contenir jusqu'à quatre valeurs delimitées par des caractères d'espacement.


Par défaut, Samba recherche le premier hôte du fichier lmhosts local. Ce fichier est l'équivalent NetBIOS du fichier /etc/hosts d'UNIX. Il tente ensuite de trouver le nom correspondant à l'hôte et de le résoudre selon la méthode standard (recherche dans le fichier /etc/hosts ou requêtes DNS. Si les deux méthodes précédentes échouent, le serveur contacte un serveur WINS s'il est spécifié dans le fichier smb.conf. Enfin, Samba diffuse des requêtes de noms.
Par défaut la valeur de ce paramètre est :


name resolve order = lmhosts hosts wins bcast


Pour que samba ne contacte pas de serveur wins et commence sa résolution par une requête DNS par exemple, on devrait avoir :


name resolve order = hosts bcast lmhosts


Annexes : C Utilisation de l'outil LinNeighborhood

Pour se connecter à un ordinateur utilisant le protocole SMB (un pc Linux/SAMBA ou un pc Win$$$), il existe la méthode brutale : smbmount! Toutefois ce n'est pas très simple et encore moins, convivial. C'est pourquoi nous allons dire quelques mots de l'application LinNeighborhood.
Ce programme fait tout et même plus que l'explorateur de Win$$$ pour ce qui est des connexions via smb. En bref, c'est le voisinage réseau de Microsoft vu par Linux. Il est l'oeuvre de Hans Schmid et de Richard Stemmer.


Dans les lignes qui suivent, vous trouverez une adaptation de la description qui est faite pour l'installation de cet outil à partir des sources au format tgz sur le site de Lea-Linux (voir notre bibliographie en fin de dossier).


Récupération et installation du paquetage LinNeighborhood.


On peut trouver la version courante sur le site de Hams Schmid (http://www.bnro.de/~schmidjo) Vous trouverez ci-dessous la procédure d'installation depuis les sources. Le package porte un nom qui ressemble à quelque chose comme LinNeighborhood-x.x.x.src.tar.gz.
La décompression et l'installation se font par la série de commandes suivantes :


# tar xzf LinNeighborhood-0.4.4.src.tar.gz

# cd LinNeighborhood-0.4.4.src/src

# make

# cp LinNeighborhood /quelque/part/dans/le/path


Par ailleurs, il est possible aussi d'installer une version précompilée au format rpm.

La configuration de LinNeighborhood en elle-même reste triviale, mais pour une utilisation confortable, il faut lui apporter quelques petits raffinements.


Lancer LinNeighborhood par la commande :LinNeighborhood


Le plus simple pour la configuration est de préciser WORKGROUP dans la zone : ScanWorkgroup (où WORKGROUP est le nom du groupe de travail du serveur SAMBA). Les autres options de la boîte de dialogue s'expliquent toutes seules. Puis sauver la configuration ;


- Cliquer sur l'onglet et choisir la version de SAMBA que l'on utilise et sauvez la configuration.


- Cliquer sur l'onglet , choisir un gestionnaire de fichier prédéfini (en cliquant sur la flèche noire) ou bien définir le sien. Sauver une dernière fois la configuration. Et quitter la boite de dialogue de configuration.


A partir de ce moment, on peut peut, depuis la fenetre de LinNeighborhood, parcourir le réseau comme on le ferait avec Win$$$ (ou presque). Mais, à ce stade on est confronté à un problème : quand vous tentez d'accéder réellement à une ressource, LinNeighborhood vous envoie le message : 'smbmount not found', la raison est simple : smbmount ne peut fonctionner qu'avec les privilèges de root.
Donc, pour que cela fonctionne depuis un compte utilisateur il faut rendre SUID les programmes : smbmount, smbumount et smbmnt.


chmod +s /usr/sbin/smbmount

chmod +s /usr/sbin/smbmnt

chmod +s /usr/sbin/smbumount


Mais cela ne suffit pas, le programme smbmount essaie de lancer le programme smbmnt mais celui-ci ne se trouve pas dans le PATH d'un utilisateur standard (il est dans /usr/sbin !). Solution : créer deux petits scripts que l'on met dans un répertoire de son PATH :


#!/bin/sh

export PATH=$PATH:/usr/sbin

smbmount $*


Appelons le par exemple smbmount-user. Et un autre :


#!/bin/sh

export PATH=$PATH:/usr/sbin

smbumount $*


Appelons le par exemple smbumount-user. Puis cliquons à nouveau sur le bouton de LinNeighborhood et dans l'onglet , modifions les entrées concernant smbmount et smbumount de façon à ce qu'elles deviennent respectivement smbmount-user et smbumount-user. Et là tout fonctionnera comme sur des roulettes.


Konqueror est maintenant un bon moyen d'accéder à un serveur smb (et donc Windows), il suffit pour cela d'indiquer dans la zone URL : smb://user@serveur/ ou smb://user:password@serveur/ pour accéder au serveur 'serveur' en tant que 'user'.