Samba (informatique)

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à la recherche
Page d'aide sur l'homonymie Pour les articles homonymes, voir Samba.
Samba
Description de l'image Samba logo 2010.svg.

Informations
Développé par The Samba Team
Première version [1]Voir et modifier les données sur Wikidata
Dernière version 4.9.1 ()[2]
4.8.6 ()Voir et modifier les données sur Wikidata
Version avancée 4.9.0rc5 ()[3]Voir et modifier les données sur Wikidata
Dépôt git.samba.orgVoir et modifier les données sur Wikidata
Écrit en C++, Python et CVoir et modifier les données sur Wikidata
Système d'exploitation MultiplateformeVoir et modifier les données sur Wikidata
Environnement Multiplateforme
Type Système de fichiers distribué
Licence GNU GPL 3
Site web www.samba.org

Samba est un logiciel d'interopérabilité qui implémente le protocole propriétaire SMB/CIFS de Microsoft Windows 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[4]. 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[5] et permettent aux serveurs Unix de se substituer à des serveurs Windows[6].

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[7]. 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.

A 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 | modifier le code]

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 décembre 1993. 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 compatible 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​[8].

Fonctionnalités[modifier | modifier le code]

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) , NTLM 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.

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émentent 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 version SMB2 puis SMB3 du protocole permette à 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 | modifier le code]

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 20 décembre 2007, Microsoft signe un accord d'information technique[13] à la suite d'un procès perdu contre l'Union européenne.


Samba PDC NT4[modifier | modifier le code]

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é 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 octobre 2018 avec le cumulatif update 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 | modifier le code]

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

Heimdal Kerberos vs MIT Kerberos[modifier | modifier le code]

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 librairie et le projet était plus dynamique lors du lancement de Samba 4 au milieu des années 2000. Il y a 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 « Enterprise », comme Red Hat ou SUSE Linux, impose que les logiciels kerbérisé supportés soient compilés avec la librairie 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 acutellement 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 | modifier le code]

Les premières version de Samba-AD ont utilisés 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 ex. utilisateur@AD.MONDOMAINE.FR) plutôt qu'un Distinguished Name (DN, par ex. 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 leur propre serveur LDAP au sein du projet Samba en 2008. A partir de la version Samba 4.9, le projet Samba 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é.

On peut noter aussi qu'il y a actuellement un travail de fond 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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 30 avril 2012 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 4 mars 2015[30] Compression Btrfs
4.3.0 8 septembre 2015[31] Nouvelle fonction de connexion SMB3.1.1
4.4.0 22 mars 2016[32] Requête flush asynchrone
4.5.8 31 mars 2017 Please see https://bugzilla.samba.org/show_bug.cgi?id=12721 for details
4.6.0 7 septembre 2017
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 | modifier le code]

Voir aussi[modifier | modifier le code]

Notes et références[modifier | modifier le code]

  1. « https://www.samba.org/samba/docs/10years.html »
  2. « https://download.samba.org/pub/samba » (consulté le 14 octobre 2018)
  3. « https://download.samba.org/pub/samba/rc/samba-4.9.0rc5.WHATSNEW.txt »
  4. (en)Roderick W. Smith,Linux Samba Server Administration: Craig Hunt Linux Library,John Wiley & Sons, 2006, (ISBN 9780782153132)
  5. (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)
  6. Michel Dutreix,Samba: Installation, mise en œuvre et administration,Éditions ENI, 2003, (ISBN 9782746021457)
  7. (en) Samba adopte la GPL 3
  8. http://www.rxn.com/services/faq/smb/samba.history.txt
  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-encoding Beyond 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. https://www.samba.org/samba/history/samba-2.2.0.html
  15. https://www.techrepublic.com/article/solutionbase-samba-30-enhances-windows-and-active-directory-integration/
  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. https://lists.samba.org/archive/samba/2018-October/218931.html
  18. https://blog.cryptomilk.org/2017/09/21/samba-4-7-0-samba-ad-for-the-enterprise/
  19. https://www.samba.org/samba/history/samba-4.7.0.html
  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 Nadezhda Ivanova sur l'intégration Openldap et Samba4-AD
  22. « Samba Release History », sur www.samba.org (consulté le 16 août 2016)
  23. http://www.samba.org/samba/history/samba1.9.17.html
  24. http://lwn.net/1999/0121/samba.html
  25. http://lists.samba.org/archive/samba-technical/2001-April/013205.html
  26. « Samba - Release Notes Archive (v3.0.0) », sur www.samba.org (consulté le 16 août 2016)
  27. « Samba 4.0 released [LWN.net] », sur lwn.net (consulté le 16 août 2016)
  28. « Samba - Release Notes Archive », sur www.samba.org (consulté le 16 août 2016)
  29. « Samba 4.1.0 released [LWN.net] », sur lwn.net (consulté le 16 août 2016)
  30. « Samba 4.2.0 released [LWN.net] », sur lwn.net (consulté le 16 août 2016)
  31. « Samba 4.3.0 released [LWN.net] », sur lwn.net (consulté le 16 août 2016)
  32. « Samba 4.4.0 - Release Notes », sur www.samba.org (consulté le 16 août 2016)