Introduction à Samba sous Gnu/Linux #C21


-- Download Introduction à Samba sous Gnu/Linux #C21 as PDF --


Samba est un logiciel libre qui supporte le protocole CIFS (Common Internet File System), anciennement appelé SMB (Server Message Block), sous licence GNU GPL 3, il est utilisé pour partager des ressources (fichiers, imprimantes …) à travers un réseau entre des postes Microsoft Windows et un serveur de fichier sous Linux.

À partir de la version 3, on peut intégrer un serveur Samba à un domaine Microsoft Windows Server, soit en tant que contrôleur de domaine principal (PDC) ou en tant que membre d’un domaine. On peut également le joindre à un domaine Active Directory. Il fonctionne sur la plupart des systèmes Unix, comme GNU/Linux, Sun Solaris, AIX et les variantes de BSD, y compris MacOSx Server (qui a été ajouté au client Mac OS X en version 10.2). Samba fait partie intégrante de presque toutes les distributions GNU/Linux.

Voici la liste des ports TCP et UDP utilisés par les protocoles SMB et CIFS pour le partage de fichiers et d’imprimantes.

Port Protocole Nom du service
135 TCP et UDP Localisateur de services RPC
137 TCP et UDP NetBIOS Name Service (nbname)
138 UDP NetBIOS Datagram Service (nbdatagram)
139 TCP NetBIOS Session Service (nbsession)
445 TCP et UDP Services de dossiers partagés Windows

Installation de Samba pour quelques grandes familles de distribs :

Si vous êtes sous Mandriva la famille Mandrake :

# urpmi samba samba-common samba-client

Sous Fedora et la famille Red-hat :

# yum install samba samba-common samba-client

Sous Debian, Ubuntu, linuxmint… :

# apt-get install samba samba-common smbclient smbfs samba-doc

Sous Slackware :

Samba est déjà présent sur le CD-ROM, l’installez en faisant :

# installpkg /chemin_du_fichier/samba-xxx.tgz

  • ATTENTION AUX DIFFERENCES EN FONCTION DES DISTRIBUTIONS
  • ATTENTION AUX DIFFERENTES VERSIONS DE SAMBA

Une fois SAMBA installé il faut se rendre à l’endroit ou se trouve le fichier de configuration.

Dans /etc ,dans /etc/samba en fonction de la distribution.

Le fichier de configuration principale est: smb.conf

Il suffit ensuite d’utiliser un éditeur de fichier pour éditer, modifier, compléter celui-ci.

ex: vi /etc/samba/smb.conf

La commande « testparm », sert à vérifier que le fichier de configuration de samba ne comporte pas d’erreurs. Elle sert également à connaitre le rôle de son serveur de fichier Samba. Vous pouvez lancer cette commande de n’importe ou.

La section [global] contient les options communes à tous les répertoires partagés.

Voici quelques options utilisables :

workgroup 
Le nom du groupe de travail.
server string 
La description du serveur, qui apparaitra à coté de son nom dans l’explorateur Windows. Si la description contient la variable %h, il sera remplacé par le nom d’hôte de la machine.
encrypt passwords Attention aux soucis en fonction des versions
Détermine si les mots de passe doivent être cryptés avant d’être transmis. C’est fortement recommandé et tous les systèmes Windows à partir de 98 et NT4 SP3 utilisent cette fonctionnalité par défaut.
log file 
Le nom du fichier qui contiendra le journal des activités du serveur. On peut avoir un journal par machine client en utilisant %m dans le nom du fichier. Le %m sera remplacé par le nom de la machine client.
max log size 
Taille maximale du fichier journal, en Ko.
Ensuite on retrouve les partages sous cette forme:[<nom du partage>] 

Les paramètres principaux sont les suivantes :

comment 
La description du répertoire partagé.
path 
Le chemin du répertoire partagé. C’est le contenu du répertoire indiqué qui sera partagé.
read only 
Détermine si les clients pourront écrire ou non dans le répertoire partagé.
public 
Autoriser ou non les connexions sans mot de passe.
valid users 
Liste des seuls utilisateurs autorisés à se connecter séparés par des espaces. Si on veut autoriser tous les utilisateurs il ne faut pas mettre cette option.
browseable 
Détermine si le partage apparaitra dans la liste des partages du serveur.

De nombreuses autres options sont disponibles. Elles sont détaillées dans la page de man de smb.conf

EXEMPLE

[global]
workgroup = CRC12
server string = Serveur Samba sur %h
encrypt passwords = true
log file = /var/log/samba/log.%m
max log size = 1000
socket options = TCP_NODELAY
[cdrom]
comment = Samba server's CD-ROM
read only = yes
locking = no
path = /cdrom
guest ok = yes
[partage]
path = /media/d/partage
available = yes
browsable = yes
public = yes
writable = yes
[tontonfred]
comment = Site web
path = /var/www/tontonfred.net
read only = no

Si vous décidez de rendre privé un partage :( Commande pour créer un user Samba)

smbpasswd -a <nom de l’utilisateur>

 

Pour accéder aux partage sous Windows, il suffit d’ouvrir le voisinage réseaux d’une station Windows et de vérifier si la machine y est.

Attention dans Authentification :

security = share  =========>Accès sans mot de passe

security = user   ==========>Accès avec demande de mot de passe

Cas particulier: accéder à un dossier partagé par Windows 7 (Source Ubuntu-fr)

Il est possible que vous ayez de la difficulté à accéder à des dossiers partagés par un ordinateur fonctionnant avec Windows 7, même en saisissant correctement vos informations d’identification du poste distant. Ceci est dû apparemment à une incompatibilité entre les modes departage de Windows 7 et ceux des précédentes versions de Windows (sur lesquels se base Samba). Pour corriger la situation, vous devez modifier certains paramètres concernant la gestion des partages par Windows 7.

  1. Dans votre ordinateur fonctionnant sous Windows 7, ouvrez une session à l’aide d’un compte d’administrateur;
  2. Ouvrez l’éditeur de base de registre. Appuyez sur le bouton Démarrer, puis dans le champ Rechercher les programmes ou fichiers, inscrivez regedit et appuyez sur la touche [Entrée] de votre clavier;
  3. Développez l’arborescence jusqu’à la clé de registre HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\ puis:
    • Modifiez la valeur de la clé everyoneincludesanonymous de 0 vers 1;
    • Modifiez la valeur de la clé NoLmHash de 1 vers 0;
  4. Développez l’arborescence jusqu’à la clé de registre HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters, puis:
    • Modifiez la valeur de la clé restrictnullsessaccess de 1 vers 0;
  5. Redémarrez votre ordinateur.

Pour se connecter en ligne de commande à un partage à partir de Linux, on peut utiliser la commande:

smbclient //<nom du serveur>/<nom du partage> -U <utilisateur>

Il est également possible de monter un partage Samba avec

smbmount //<nom du serveur>/<nom du partage> <répertoire local>

Différentes options sont disponibles. On peut les consulter dans man smbclient et man smbmount.

Par exemple, pour monter un répertoire “public” il faut préciser qu’il faut se connecter en guest :

smbmount //serveur/partage /point_de_montage -o guest

Même chose à partir d’un Windows Client

net use z: \\10.0.0.10\monrepertoire  monpassword /user:toto /persistent:no

 

Le fonctionnement de Samba repose principalement sur trois services (daemons): smbd , nmbd et winbindd

  • smbd 
    Ce service est celui qui permet le partage des fichiers et des imprimantes. Son paramètrage se fait par l’intermédiaire du fichier deconfiguration /etc/samba/smb.confsmbd vérifie toutes les trois minutes ce fichier pour prendre en compte les modifications ; pour une application immédiate des changements, relancez ce service
  • nmbd 
    Ce service sert à l’envoi et la découverte des noms NetBIOS (nom des machines) dans le réseau local. Il est également utilisé pour la résolution de noms et la fonction WINS, lorsque votre serveur Samba est le serveur d’un réseau NetBIOS. Ses paramètres sont aussi renseignés dans le fichier de configuration /etc/samba/smb.conf.
  • winbindd 
    Ce service n’est utilisé que lorsqu’un serveur Samba intègre un domaine NT ou pour gérer les relations d’approbation entre le serveur Samba et un domaine Windows / Active Directory.

Quand vous effectuez une modification dans le fichier smb.conf, il faut redémarrer le service Samba en relation avec la modification.

/etc/init.d/samba restart

service samba restart

/etc/init.d/smbd restart

Pour optimiser le fonctionnement de Samba on peut utiliser des variables d’environnement:

Variables du client
%a Architecture du client
Exemple: Win95, WfWg, WinNT, Samba …
%I 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

Pour configurer Samba il existe des interfaces graphique, soit propre à la distribution soit des outils tiers que l’on rajoute.Comme Webmin et Swat

Samba Contrôleur de Domaine

Modifier les paramètres important du smb.conf :

[global]
# Nom du groupe de travail ou du domaine
workgroup = tontonfred.net

# Nom qui apparait lors du parcours reseau (%h = hostname)
server string = %h

# Configuration des logs du serveur
log file = /var/log/samba/%m.log

# Taille maximal des logs (en kb)
max log size = 1000

# Mode d'authentification
# - share = ok pour tous
# - user = oblige d'avoir un compte sur le serveur samba
# - domain = pour joindre un domaine
security = user

# Activation du cryptage des mots de passe
encrypt passwords = yes

#Emplacement du fichier des utilisateurs samba
smb passwd file = /etc/samba/smbpasswd

# L'option ci-dessous definit Samba comme le Controleur de domaine principal (maitre).
domain master = true

# Le niveau d'OS indique l'importance de ce serveur en tant que candidat au role de controleur principal lorsqu'une élection est provoquée
os level = 255

# Permettre d'utiliser les profils errants sur le serveur samba
domain logons = Yes

# Gestion de l'authentification sur le domaine
wins support = no

Redémarrer le service Samba et tester le rôle avec testparm pour avoir :

Le plus important est ROLE_DOMAIN_PDC

Pour joindre un client Xp ou Seven, il faut tout d’abord avoir créer un compte samba à l’utilisateur root, soit: smbpasswd -a root

ensuite il faut créer des comptes machines pour les pc sous Seven/xp, cad :
adduser –force-badname nomduclientwindows$ 
smbpasswd -a -m nomduclientwindows (sans le $)

Ensuite il faut joindre le domaine avec le client Windows avec l’utilisateur root comme vous avez l’habitude de le faire avec un Domaine Windows.

N’oubliez pas de modifier le registre de Seven

Si problème avec Xp modifier le registre comme ceci :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\parameters
“RequireSignOrSeal”=dword:00000000

Pour les visiteurs lisant ce billet, attention on ne gére pas dans cette exemple les partages administratifs de Windows pour les profils itinérants .Ils seront vus ici dans un autre billet ultérieurement.

Sources:

  • http://fr.wikibooks.org/wiki/Administration_r%C3%A9seau_sous_Linux/
  • http://www.samba.org/
  • http://doc.ubuntu-fr.org/samba
PDF Download    Envoyer l'article en PDF   
  • Anonyme

    Samba pati ou pas pati???

    • Anonyme

      ??

      • Anonyme

        Samba pa ti tube de  Carlos SANTANA 1970 album Abraxas… C’est ta génération qd même…

  • http://twitter.com/samjedi SamJedi

    Pour joindre le domaine à partir de Windows 7 :
    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesLanman­WorkstationParameters]

    “DomainCompatibilityMode”=dword:00000001

    “DNSNameResolutionRequired”=dword:00000000

    • David Garin

      Clés à rajouter

  • Jerome_CRC11

    C’est dispo en pdf ou pas pour nous ?

  • tontonfred

    Question de Matthieu
    Comment afficher la liste des utilisateurs SAMBA ?
    avec cette commande :
    pdbedit -L