Samba (informatique)

logiciel informatique

Samba est un logiciel d'interopérabilité qui implémente le protocole propriétaire SMB/CIFS de Microsoft Windows (plus souvent connu sous le sigle SMB) dans les ordinateurs tournant sous le système d'exploitation Unix et ses dérivés de manière à partager des imprimantes et des fichiers dans un réseau informatique[3]. Samba facilite l'interopérabilité entre systèmes hétérogènes Windows-Unix. Il offre la possibilité aux ordinateurs d'un réseau d'accéder aux imprimantes et aux fichiers des ordinateurs sous Unix[4] et permettent aux serveurs Unix de se substituer à des serveurs Windows[5].

Il s'agit d'une réimplémentation des protocoles SMB/CIFS sous GNU/Linux et d'autres variantes d'Unix par ingénierie inverse. Samba a été initialement développée par l'Australien Andrew Tridgell et distribuée sous licence libre GNU GPL 3[6]. Son nom provient du nom du protocole standard de Microsoft, SMB (Server Message Block), auquel ont été ajoutées les deux voyelles a : « SaMBa ».

À partir de la version 3, Samba fournit des fichiers et services d'impression pour divers clients Windows et peut s'intégrer à un domaine Active Directory en tant que membre du domaine. Samba3 peut aussi être configuré en tant que PDC (Primary Domain Controller (en)) en mode domaine NT4.

À partir de la version 4, Samba peut servir de contrôleur de domaine Active Directory et fournir les services d'authentification AD à des postes Windows, des postes Linux et des serveurs membres.

Il fonctionne sur la plupart des systèmes Unix, comme GNU/Linux, Solaris, AIX et les variantes BSD, y compris Apple, Mac OS X Server (qui a été ajoutée au client Mac OS X en version 10.2). Samba est livré dans presque toutes les distributions GNU/Linux.

Historique modifier

Andrew Tridgell a développé la première version de Samba Unix, en 1992, à l'Australian National University, en utilisant un analyseur de paquets pour réaliser une analyse réseau du protocole utilisé par le logiciel de DEC PATHWORKS, nbserver 1.5, publié en . Tridgell a découvert plus tard que le protocole était en grande partie identique à celui utilisé par d'autres systèmes de partage de fichiers, y compris celui de Microsoft. Il a ensuite décidé de se concentrer sur une compatibilité du réseau Microsoft. Samba reçoit aujourd'hui les contributions d'une vingtaine de développeurs originaires du monde entier sous sa coordination.

Auparavant, les PC équipés de DOS et des premières versions de Windows, devaient parfois installer une pile TCP/IP, et un ensemble de logiciels d'origine[réf. nécessaire] Unix : un client NFS, FTP, telnet, lpr, etc. Cela était lourd et pénalisant pour les compatibles PC de l'époque, et il obligeait par ailleurs leurs utilisateurs à contracter un double jeu d'habitudes, ajoutant celles d'UNIX à celles de Windows. Samba adopte donc la démarche inverse.

À l'origine, Samba était appelé SMBServer. Le nom a dû être changé en raison de l'opposition de la société "Syntaxe", qui vendait un produit nommé TotalNet Advanced Server et propriétaire de la marque "SMBServer". Le nom « Samba » a été donné en choisissant un nom voisin de SMB en interrogeant un dictionnaire Unix, par la commande grep : grep -i '^s.*m.*b' /usr/share/dict/words[7].

Fonctionnalités modifier

Samba est la mise en œuvre d'une dizaine de services et d'une douzaine de protocoles. Il comprend le protocole de partage de fichiers et d'imprimantes SMB, le protocole d'appel distant DCE/RPC (en) ou, plus spécifiquement MSRPC (en), les protocoles intervenant dans le fonctionnement d'Active Directory, la couche d'interopérabilité NetBIOS sur TCP/IP (NBT). La suite de protocoles du voisinage réseau, un serveur WINS aussi connu sous le nom de NetBIOS Naming Service (NBNS). Les protocoles d'un domaine NT qui comprend l'ouverture d'une session NT, une base de données Security Account Manager (SAM), un service Local Security Authority (LSA), un service d'impression (Spoolss) et plus récemment l'ouverture de session Active Directory comprenant une version modifiée de Kerberos et de LDAP. Samba peut voir et partager des imprimantes.

Le protocole NTLM n'est plus utilisé dans les dernières versions de Samba car jugé obsolète et son retour n'est pas souhaité par les développeurs [8].

Samba configure des partages réseaux pour les répertoires Unix (y compris le contenu de tous les sous-répertoires). Ils apparaissent pour les utilisateurs de Windows comme des dossiers Windows classiques accessibles via le réseau. Les utilisateurs d'Unix peuvent lire les partages avec le smbclient (libsmb) installé avec Samba. Chaque répertoire peut avoir des privilèges d'accès différents. Par exemple : les répertoires ayant un accès en lecture/écriture pour tous les utilisateurs définis, permettent à chacun d'eux d'accéder à leurs propres fichiers. Mais ils n'ont pas accès aux dossiers des autres, sauf si une autorisation est définie. À noter que le partage netlogon (/etc/samba/netlogon), généralement accessible en lecture, est le répertoire par défaut pour les scripts d'ouverture de session utilisateur.

La configuration est réalisée par l'édition d'un fichier unique (généralement installé dans /etc/smb.conf ou /etc/samba/smb.conf). Samba peut aussi fournir des scripts d'ouverture de session utilisateur et une mise en place de groupes de stratégies via poledit.

Dans les versions antérieures à la version 4.1, Samba incluait un outil d'administration web appelé SWAT (Samba Web Administration Tool)[9].

La comparaison des performances entre Samba et les autres systèmes de partage de fichiers UNIX comme NFS n'est plus pertinente comme elle a pu l'être dans le passé. En effet Samba implémente désormais les protocoles SMB2 et SMB3, et bien que la première version SMB1 (aussi connu sous le nom CIFS) était relativement lente en raison de sa verbosité, les versions SMB2 puis SMB3 du protocole permettent à Samba d'avoir des performances comparables à celles que l'on peut avoir avec un système NFS, iSCSI ou FiberChannel[10].

La version 3.2 apporte le support de IPv6 et ajoute la possibilité de stocker les partages Samba dans la base de registre ainsi que l'expérimentation du clustering et d'autres améliorations[11].

Interopérabilité modifier

Le protocole Samba permet d'assurer l'interopérabilité entre plates-formes différentes et régions différentes par une gestion adéquate de l'encodage des noms de fichiers[12].

Le , Microsoft signe un accord d'information technique[13] à la suite d'un procès perdu contre l'Union européenne.

Samba en Workgroup modifier

Samba permet à un client Linux ou BSD de fonctionner dans un groupe de travail (workgroup) comme un client Microsoft Windows et partager des fichiers et des imprimantes ou accéder à des ressources sur d'autres postes. À partir de Windows 7 la découverte du voisinage réseau en workgroup passe par le protocole LLMNR. Samba n'implémente pas de serveur LLMNR mais peut s'appuyer sur un client implémentant ce protocole comme WSSD2

Samba PDC NT4 modifier

Samba intègre à partir de la version 2.2 sortie en 2001 un support partiel du rôle de contrôleur de domaine PDC NT4 (Primary Domain Controler)[14]. Cette fonctionnalité devient vraiment mature avec la version 3.0 sortie fin 2003[15].

Samba PDC NT4 peut utiliser un serveur LDAP ou des fichiers TDB (Trivial Database) comme base de stockage des comptes utilisateurs. L'utilisation de OpenLDAP en mode master/slave permet de configurer des contrôleurs de domaine (Backup Domain Controler, BDC). Si l'on utilise OpenLDAP en mode multi-master, il est possible d'utiliser Samba en mode multi-PDC, tant qu'il n'y a pas plus d'un PDC par site.

Microsoft a arrêté le support de Windows NT4 fin 2004, et par là même le support du rôle PDC NT4. Contrairement aux PDC sous Windows, les serveurs PDC NT4 Samba ont continué de bénéficier des améliorations techniques, comme le support SMB2 puis SMB3, l'amélioration de la sécurité avec le NTLM signing et sealing, etc. Ces améliorations de sécurité font que les domaines de type Samba NT4 sont encore utilisés aujourd'hui. D'ailleurs avec la version Windows 10 1803, quand Microsoft a supprimé la possibilité d'intégrer les postes à un domaine de type NT4, ce même support a été réintégré en avec la mise à jour cumulative KB4458469[16] pour la version Windows 10 1809[17].

On associe souvent la version Samba 4 au support Active Directory. Il est important de souligner que le support de la fonctionnalité PDC NT4 est toujours présent dans Samba 4. On peut donc avoir un contrôleur de domaine Samba 4 PDC NT4, ou un contrôleur de domaine Samba 4 AD.

Samba Active Directory modifier

Avec la sortie de la version 4.0 le , Samba a désormais la capacité de servir de contrôleur de domaine Active Directory. Depuis cette version, le projet Samba a sorti une nouvelle version environ tous les 9 mois puis plus récemment tous les 6 mois.

Heimdal Kerberos vs MIT Kerberos modifier

Le serveur Kerberos est une brique fondamentale du serveur Active Directory. Au début du projet Samba 4, les développeurs ont choisi d'utiliser l'implémentation Heimdal Kerberos plutôt que l'implémentation MIT Kerberos. Heimdal Kerberos est plus facilement intégrable comme bibliothèque et le projet était plus dynamique lors du lancement de Samba 4 au milieu des années 2000. Il y a eu des efforts à partir de 2013 de la part de l'équipe Samba pour porter le code de Samba Active Directory sous MIT Kerberos[18]. En effet, les distributions Linux « Entreprise », comme Red Hat ou SUSE Linux, imposent que les logiciels kerbérisé supportés soient compilés avec la bibliothèque MIT Kerberos. La première version de Samba avec un support officiel partiel de MIT Kerberos est la verison 4.7[19].

Le projet Samba n'utilise pas la version Upstream (développement logiciel) (en) de Heimdal Kerberos. En effet, la version de Heimdal qui est actuellement intégrée dans Samba correspond à la version Heimdal de 2012 avec les patchs de sécurités backportés. Il ne s'agit pas d'un fork à proprement parler, mais plus d'une facilité, et le projet Samba essaye actuellement de revenir sur la version upstream pour permettre d'intégrer le support des fonctionnalités Kerberos plus avancées, comme le FAST, les claims, les silos, etc.

Samba et OpenLDAP modifier

Les premières versions de Samba-AD ont utilisé OpenLDAP comme backend LDAP. Toutefois, lors de la création d'Active Directory, Microsoft a mis en place des extensions au protocole LDAP pour que celui-ci gère au mieux les contraintes d'un environnement Windows. Par exemple, Active Directory permet de s'authentifier avec un User Principal Name (UPN, par exemple utilisateur@AD.MONDOMAINE.FR) plutôt qu'un Distinguished Name (DN, par exemple CN=utilisateur,OU=users,DC=ad,DC=mondomaine,DC=fr).

Le besoin d'avancer dans l'implémentation des protocoles Active Directory a poussé le projet Samba à ré-implémenter son propre serveur LDAP au sein de Samba en 2008. À partir de la version Samba 4.9, le projet décide de ré-utiliser le moteur de base de données LMDB d'OpenLDAP pour le stockage Active Directory[20]. Le serveur LDAP reste néanmoins celuis de Samba, seul le moteur de stockage a été remplacé.

En 2015, un travail de fond est réalisé par la société Symas pour à nouveau réintégrer OpenLDAP comme un backend viable au sein du serveur Samba Active Directory[21].

Samba 4 modifier

Samba 4 est une version de la suite Samba développée en parallèle avec la branche stable 3.x. Une des nouveautés majeures de cette version est le support des protocoles d'authentification utilisés par Windows 2000 et plus.

Nouveautés modifier

Samba 4 supporte le côté serveur dans un environnement Active Directory utilisé par Windows 2000. Il est ainsi possible de joindre complètement des clients Windows à un domaine et effectuer des opérations d'ouverture de session.

Il inclut un serveur LDAP et un centre de distribution de clés Kerberos (KDC).

Principales versions[22] modifier

Version Date de sortie Note
1.9.17 Première version publique[23]
2.0.0 Correction de failles importantes[24]
2.2.0 Gestion 64 bits complète[25]
3.0.0 Corrections failles importantes et nouvelles fonctions[26]
3.0.26 Corrections failles importantes et nouvelles fonctions
3.2.0 Corrections des failles de sécurité
3.3.0
3.4.0 1re version combinant les code de Samba 3 et Samba 4
3.4.17 Dernière version stable de la branche Samba 3.4
3.5.0 1re version avec support expérimental pour SMB2
3.6.0 1re branch incluant le support complet de SMB2
4.0.0 [27] SMB v2.1[28]
4.1.0 [29] SMB3
4.2.0 [30] Compression Btrfs
4.3.0 [31] Nouvelle fonction de connexion SMB3.1.1
4.4.0 [32] Requête flush asynchrone
4.5.8 Please see https://bugzilla.samba.org/show_bug.cgi?id=12721 for details
4.6.0
4.7.0 20 September 2017 Amélioration du fonctionnement avec Active Directory (LDAP)

ChangeLog https://www.samba.org/samba/history/samba-4.7.0.html

4.8.0 Support partiel des trusts inter-domaine, amélioration des index Samba-AD

Changelog https://www.samba.org/samba/history/samba-4.8.0.html

4.9.0 Introduction du backend LMDB, amélioration de l'audit, outil de backup et de renommage de domaine

Changelog https://www.samba.org/samba/history/samba-4.9.0.html

Liens externes modifier

Notes et références modifier

  1. « https://www.samba.org/samba/docs/10years.html »
  2. « [Announce] Samba 4.20.0 Available for Download », (consulté le )
  3. (en)Roderick W. Smith,Linux Samba Server Administration: Craig Hunt Linux Library,John Wiley & Sons, 2006, (ISBN 9780782153132)
  4. (en)Jay Ts, Robert Eckstein, David Collier-Brown,Samba Pocket Reference: A Unix-to-Windows File & Print Server,O'Reilly Media, Inc. - 2003, (ISBN 9780596005467)
  5. Michel Dutreix,Samba: Installation, mise en œuvre et administration,Éditions ENI, 2003, (ISBN 9782746021457)
  6. (en) Samba adopte la GPL 3
  7. http://www.rxn.com/services/faq/smb/samba.history.txt
  8. « Samba4/Proposal for IPA to AD trust - SambaWiki », sur wiki.samba.org (consulté le )
  9. https://wiki.samba.org/index.php/Samba_4.1_Features_added/changed Changelog Samba 4.1 annonçant la suppression de SWAT
  10. https://blog.netapp.com/blogs/does-smb3-have-the-performance-and-high-availability-required-for-microsoft-sql-workloads-yes/ Comparaison SMB3 avec d'autre protocole
  11. Samba status update du 13 mars 2008 (format PDF)
  12. http://www.linuxfromscratch.org/blfs/view/cvs/introduction/locale-issues.html#locale-wrong-filename-encodingBeyond Linux® From Scratch - Version 2012-08-12 - Chapter 2. Important Information - Going Beyond BLFS - Locale Related Issues
  13. Samba and the PFIF, Samba Team Receives Microsoft Protocol Documentation
  14. « Release Notes Archive », sur samba.org (consulté le ).
  15. Scott Lowe MCSE, « SolutionBase : Samba 3.0 enhances Windows and Active Directory integration », sur techrepublic.com, (consulté le ).
  16. https://support.microsoft.com/en-us/help/4458469/windows-10-update-kb4458469 Bulletin Microsoft avec le correctif pour réintégrer le support des domaines NT4
  17. « [Samba] NT4 style domain support », sur samba.org (consulté le ).
  18. (en) « Samba 4.7.0 (Samba AD for the Enterprise) », sur cryptomilk.org (consulté le ).
  19. « Release Notes », sur samba.org (consulté le ).
  20. https://www.samba.org/samba/history/samba-4.9.0.html "Changelog Samba avec nouveau support expérimental de LMDB
  21. https://ldapcon.org/2015/wp-content/uploads/2015/09/ivanova-samba_backend.pdf "Présentation de Nadejda Ivanova sur l'intégration Openldap et Samba4-AD
  22. « Samba Release History », sur www.samba.org (consulté le )
  23. « Release Notes Archive », sur samba.org (consulté le ).
  24. « Samba », sur lwn.net (consulté le ).
  25. « Glossy press release : -). », sur samba.org (consulté le ).
  26. « Samba - Release Notes Archive (v3.0.0) », sur www.samba.org (consulté le )
  27. « Samba 4.0 released [LWN.net] », sur lwn.net (consulté le )
  28. « Samba - Release Notes Archive », sur www.samba.org (consulté le )
  29. « Samba 4.1.0 released [LWN.net] », sur lwn.net (consulté le )
  30. « Samba 4.2.0 released [LWN.net] », sur lwn.net (consulté le )
  31. « Samba 4.3.0 released [LWN.net] », sur lwn.net (consulté le )
  32. « Samba 4.4.0 - Release Notes », sur www.samba.org (consulté le )