[logoP5] [logoCDC]





Des questions, des incertitudes. Voici des éléments de réponse pour :


8. Samba

Article écrit par : Laurent Moineau

Introduction

Samba est un logiciel libre client et serveur qui émule le protocole SMB de Microsoft Windows.

En version serveur samba permet :

-  le partage de fichiers se trouvant sur un serveur Unix ;
-  aux machines clientes (windows mais pourquoi pas également Unix) d’utiliser des imprimantes gérées par un serveur Unix (lpr, lprng ou cups) ;
-  l’authentification des utilisateurs, soit « nativement » (simple fichier smbpasswd ou démon windbind) soit en faisant appel à une source externe comme LDAP ;
-  la gestion des droits d’accès de ces utilisateurs.

Samba peut également servir de serveur de noms NETBIOS et de PDC (Primary Domain Controller).

La dernière version est, de façon expérimentale, capable de gérer la technique Active Directory.

En version cliente, samba permet aux machines Unix de se connecter à une ressource partagée par le protocole SMB, soit :

-  un accès à des fichiers ;
-  d’utiliser une imprimante partagée.

Samba fournit un logiciel de configuration via une interface web, swat.

Toutes les distributions linux offrent une version du logiciel samba - le site samba.org propose, outre les sources, également des binaires -, l’installation n’offre aucune difficulté.

Les dernières versions de samba sont la 3.0.4 et la 2.2.9. Une version spéciale appelée samba-tng, qui est un fork de samba, est plus particulièrement destinée à remplacer complètement un serveur windows contrôleur de domaine. Nous n’avons pas testé cette version.

Liens :

Site officiel de samba

Site français

Intégration LDAP

samba-tng

Après avoir introduit les principales fonctionnalités de samba, cet exposé décrira le fonctionnement du serveur samba servant à la gestion des étudiants de l’UFR de Mathématiques et d’Informatique.

Les démons

Le logiciel samba fait tourner 2 ou 3 démons - application unix qui tourne en arrière plan et qui répond à des requêtes émanant des clients.

nmbd

Ce démon traite toutes les requêtes qui concernent la résolution des noms. C’est lui qui est impliqué dans la recherche d’ordinateurs par le « voisinage réseau ». Il fonctionne en UDP. Il est toujours lancé en premier lors du démarrage de samba.

smbd

Ce démon traite toutes les connexions aux services reposant sur TCP/IP : opérations sur les fichiers, impression, etc. Il est également responsable de l’authentification. Il est démarré aussitôt après nmbd.

winbindd

Ce démon doit être activé si le serveur samba est membre d’un domaine NT et/ou s’il existe une relation d’approbation entre les différents domaines.

La configuration

Toute la configuration de samba se trouve dans le fichier /etc/samba/smb.conf. La syntaxe est la même que celle des anciens fichiers .ini de windows 3.1. Ce fichier est divisé en plusieurs sections.

Le test de la configuration se fait à l’aide de la commande testparm.

Important : les valeurs par défaut n’ont pas à être indiquée dans ce fichier, ce qui explique les différence du nombre de lignes entre le fichier lui-même et le résultat de testparm.

Les options globales

workgroup : il s’agit du nom du groupe de travail dans lequel se situe le serveur. Dans le cas d’un PDC, il s’agira du nom du domaine.

netbios name : il s’agira du nom NETBIOS sur serveur. En pratique, on met le même nom que celui de la machine Unix.

interfaces : adresse ip de la machine / netmask

security : il s’agit d’un des paramètres les plus importants. Par défaut, il est égal à user. Dans ce cas, les utilisateurs windows doivent être les mêmes que les utilisateurs unix. Si les utilisateurs windows n’ont pas de compte unix, le paramètre doit être égal à shared. Si l’authentification doit se faire sur un Contrôleur de Domaines - qui n’est pas l’ordinateur samba -, le paramètre doit alors être égal à domain.

encrypt passwords : Si le paramètre est égal à yes, le mot de passe circule de manière cryptée entre le serveur et le client. Cette option est obligatoire avec les systèmes windows récents. Le mot de passe est ensuite comparé avec le fichier local smbpasswd ou transmis soit à un annuaire LDAP ou à un Contrôleur de Domaines Windows.

guest account : Il s’agit d’un « utilisateur » qui sera utilisé pour accéder à des services (partages, imprimantes) qui acceptent une connection non authentifiée (guest ok doit être égal à yes). Le compte spécifié doit être un compte unix, de préférence sans le shell (nobody, ftp, etc.). Attention : si ce paramètre est mal configuré (le compte unix n’existe pas ou plus) et que samba est configuré en PDC, les machines clientes ne pourront plus se connecter au domaine.

smb passwd file : il s’agit du fichier qui sert à l’authentification des clients (utilisateurs et machines). Il n’est pas utilisé dans le cas d’une authentification via un annuaire LDAP. Par défaut, on a :

/etc/samba/smbpasswd

passdb backend : Cette option permet à l’administrateur de choisir la méthode utilisée pour extraire et stocker les mots de passe. Sont disponibles : smbpasswd (le fichier défini ci-dessus),tdbsam, ldapsam, nisplussam et mysql.

hosts allow : les machines autorisées à se connecter au serveur. Le séparateur est la virgule, la syntaxe classe ip/netmask est valable. Ne pas oublier de mettre localhost ou 127.0.0.1. Exemple :

localhost, 193.48.200.0/24, 193.49.116.0/24

nt acl support : Si défini à yes, alors samba va tenter de gérer les droits d’accès avec les attributs étendus de windows. Il faut bien entendu que le système de fichiers unix les supporte, ce que fait nativement xfs. Les gestion des acls est intégrée dans le noyau 2.6 de linux. La distribution Fedora Core 2 permet de gérer ces acl avec ext3 si l’on précise le paramètre acl dans les options de montage du système de fichiers (/etc/fstab) :

/dev/xxxx   /mnt/point ext3 acl,defaults ...

profile acls : Si nt acl support est égal à no, profile acls doit être égal à yes si l’administrateur de la machine windows désire supprimer localement les profiles des utilisateurs.

load printers : Ce paramètre indique si les utilisateurs peuvent voir sur leurs machines toutes les imprimantes définies sur le serveur unix. En pratique, il vaut mieux mettre no et définir chaque imprimante dans le fichier smb.conf.

lpq command et lprm command : Ces paramètres doivent être configurés suivant le système d’impression choisi sur le serveur Unix.

logon drive : La lettre du lecteur windows qui va contenir le répertoire de base de l’utilisateur (ex : Z :). Ce paramètre n’est utile que si samba est utilisé comme PDC.

domain logons : Si le serveur samba est utilisé comme PDC, cet attribut doit être égal à yes.

domain master : Doit être égal à yes si le serveur samba est utilisé comme PDC.

os level : Plus la valeur de ce paramètre est élevée, plus le serveur samba sera considéré comme « browser master » par les clients windows. Si le serveur samba est PDC du domaine, mettre cette valeur à 100.

remote announce : Le démon nmbd peut s’annoncer périodiquement à un ensemble de machines d’une plage ip considérée. Il peut d’autre part ne s’annoncer que pour un domaine ou worgroup spécifié. Exemple :

193.48.200.255/UFR-MI

admin users : une liste d’utilisateurs ou de groupes (séparateur espace) habilités à avoir les droits d’administrateur. Exemple :

admin users = admdom @cdc

On note que la référence au groupe s’écrit @NomDeGroupe

Les partages

Samba va pouvoir partager des répertoires situés sur le serveur unix. C’est d’ailleurs sa principale utilisation. Les partages sont également définis dans le fichier smb.conf.

On prendra ici l’exemple d’un répertoire accessible en lecture à des étudiants et mis à jour par des enseignants :

[Data Licpro]
comment = Donnees Licence Professionnelle
path = /users/lpro/Data
valid users = @lpmifc, @lpmifi, @ufr
write list = @ufr
read only = No
inherit permissions = Yes

Le répertoire /users/lpro/Data est accessible depuis des machines windows sous le nom de « Data Licpro ». Seuls les membres des groupes lpmifc, lpmifi et ufr ont le droit d’y accéder. Seuls les membres du groupe ufr ont le droit d’écrire.

Le paramètre inherit permissions = Yes signifie que les droits d’accès du répertoire seront hérités par les fichiers et sous-répertoires crés.

On prend maintenant un répertoire qui est accessible en lecture par toute personne connectée dans le réseau de l’UFR de Math-Info et en écriture par le groupe ufr :

[Data Mi1]
comment = Sources Mi1
path = /users/cycle2_1/Data
write list = @ufr
inherit permissions = Yes
guest ok = Yes
hosts allow = localhost, 193.48.200.0/255.255.255.0, 193.49.116.0/255.255.255.0

C’est le paramètre guest ok = Yes qui permet de s’affranchir de l’authentification.

Imprimer avec samba

La version 2.2 a apporté une innovation majeure en permettant aux stations windows de télécharger les pilotes d’impression depuis le serveur samba. Celui-ci peut donc être configuré comme un véritable serveur d’impression windows.

On définit tout d’abord un partage spécial appelé Print$ :

[print$]
       path = /var/samba/printers
       write list = admdom @cdc
       guest ok = Yes

Le répertoire /var/samba/printers est un répertoire qui va contenir les pilotes associés à chaque imprimante. En fait il faut créer un sous répertoire appelé W32X86 qui contiendra lui-même les sous-répertoires 2 et 3. Cela correspond aux différentes versions de windows dont samba reprend la configuration (cf . C:\WINNT\...

Une fois l’imprimante configurée sous unix, on peut ajouter l’imprimante dans le fichier smb.conf :

[imp-507]
       path = /var/spool/samba
       guest ok = Yes
       printable = Yes
       printer name = imp-507

Il faut ensuite se connecter sur une machine windows du domaine et mettre à jour les pilotes du serveur. Les pilotes sont téléchargés dans les sous répertoires indiqués dans le partage Print$ et l’association pilote/imprimante est stockée dans le fichier ntdrivers.tdb (dans le répertoire /var/lib/samba).

Attention : l’utilisateur doit avoir les droits d’écriture unix sur un certain nombres de répertoires, notamment /var/samba/printers. Nous avons défini un utilisateur spécial via LDAP qui a pour login admdom mais les membres du groupe cdc ont également les droits d’écriture.

Les outils unix

Samba est livré avec un certain nombre de commandes et le pseudo système de fichiers smbfs est disponible dans toutes les distributions linux.

Les commandes en ligne

-  smbstatus

Cette commande permet de visualiser l’état du serveur :

Samba version 3.0.4
PID     Username      Group         Machine
-------------------------------------------------------------------
7793   hv05727       dmias1        pc513-3      (193.49.116.130)
 730   hu03699       dmias2        pc508-4      (193.49.116.54)

....
Service      pid     machine       Connected at
-------------------------------------------------------
hv05727       7793   pc513-3       Thu May 27 18:10:11 2004
...
Locked files:
Pid    DenyMode   Access      R/W        Oplock           Name
--------------------------------------------------------------
7793   DENY_WRITE 0x20        RDONLY     EXCLUSIVE+BATCH  /users/cycle1_1/2003/hv05727/SHDOCVW.DLL   Thu May 27 18:10:38 2004

-  smbclient

On peut se connecter à un partage samba depuis une machine unix :

smbclient \\\\ServeurSamba\\Utilisateur

-  Montage d’un répertoire samba sous unix

Il peut être utile de monter un répertoire samba sur une machine unix. Voici ce que l’on peut mettre dans /etc/fstab :

//ServeurSamba/Utilisateur /mnt/smb smbfs noauto,user,username=user 0 0

Attention : il faut mettre noauto car samba va demander un mot de passe !

De même, les gestionnnaires de fichiers nautilus et Konqueror permettent sous linux d’accéder aux partages samba.

Re Attention : dans les deux cas, les mots de passe circulent en clair sur le réseau !

Intégration LDAP

Samba utilise ses propres schémas ldap qu’il faut inclure dans la création de l’annuaire. Si on utilise la version 3, une recompilation avec comme paramètre de compilation (configure) --with-ldapsam est à prévoir si l’on continue d’utiliser les schémas de la version 2.2.

La société idealix diffuse une série de scripts avec le package smbldap-tools et a réalisé un document de configuration.

Les schémas

Il faut impérativement avoir :

include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/samba.schema

Pour optimiser l’interrogation de l’annuaire, on doit mettre dans le fichier slap.conf du serveur ldap :

index      sambaSID,sambaPrimaryGroupSID,sambaDomainName    eq

Pour sécuriser les mots de passe, on doit avoir :

access to attrs=userPassword  
     by self write
     by anonymous auth
     by * none
access to attrs=sambaLMPassword
     by self write
     by anonymous auth
     by * none
access to attrs=sambaNTPassword
     by self write
     by anonymous auth
     by * none
access to *
     by * read

On modifie ensuite le fichier /etc/samba/smb.conf en ajoutant les lignes suivantes dans les options générales :

ldap passwd sync = Yes
...
; SAMBA-LDAP declarations
passdb backend = ldapsam:ldap://127.0.0.1/
# ldap filter = (&(objectclass=sambaSamAccount)(uid=%u))
ldap admin dn = cn=Manager,dc=IDEALX,dc=ORG
ldap suffix = dc=IDEALX,dc=ORG
ldap group suffix = ou=Groups
ldap user suffix = ou=Users
ldap machine suffix = ou=Computers
ldap ssl = start_tls

add machine script = /usr/local/sbin/smbldap-useradd -w "%u"
add user script = /usr/local/sbin/smbldap-useradd -m "%u"
#delete user script = /usr/local/sbin/smbldap-userdel "%u"
add group script = /usr/local/sbin/smbldap-groupadd -p "%g"
#delete group script = /usr/local/sbin/smbldap-groupdel "%g"
add user to group script = /usr/local/sbin/smbldap-groupmod -m "%u" "%g"
delete user from group script = /usr/local/sbin/smbldap-groupmod -x "%u" "%g"
set primary group script = /usr/local/sbin/smbldap-usermod -g "%g" "%u"

ldap admin dn : Cet attribut définit le Distinguished Name (DN) utilisé par samba pour contacter le serveur LDAP lorsqu’il accède aux informations de l’utilisateur. Cet attribut est utilisé en concordance avec le admin dn password stocké dans le fichier secrets.tdb.

On note ici que la methode d’accès aux mots de passe (passdb backend) est ldapsam avec comme machine l’interface locale.

Le serveur étudiant

Il s’agit du serveur des étudiants de l’UFR de Math-Info. Il gère environ 1000 étudiants et environ 80 machines, toutes sous linux et windows 2000.

L’authentification des utilisateurs se fait via un annuaire LDAP, directement pour linux, via samba pour windows.

L’annuaire LDAP de Math-Info est alimenté par celui de la DSI : les informations de ce dernier proviennent de la base apogée.

On peut voir ici la configuration du serveur générée par la commande testparm.

Cette configuration est work in progress mais opérationnelle.










Cours Linux :

Introduction à GNU Linux

1.Introduction à LINUX
2.Configuration multi-systèmes
3.Environnement graphique GNOME
4.Gestion de fichiers
5.Le gestionnaire de fichiers nautilus
6.Gestion de processus
7.Les applications réseaux
8.Le shell

Services réseau

1. Le démarrage des services réseau sous Gnu/Linux
2. Le service dhcp
3. DNS
4. Le service httpd et apache
5. Samba
6. Le service de messagerie
7. Les services cryptés



Autres Rubriques :

.Accueil
.Le Centre de Calcul
.Réseau de l’UFR
.Linux
.Windows

Liens dans l’UFR :

.Licence Professionnelle
.UFR de Mathématique et Informatique
.Connexions (SSH) et Messageries (IMP ou TWIG) sécurisées

Liens Internet :

.Linux France
.Da Linux French Page
.Léa-Linux(pour débutants)
.Distribution RedHat
.Distribution Mandrake














Site réalisé par Thierry LECHIEN avec SPIP logiciel libre sous licence GNU/GPL. Hébergement à Paris5