Samba ist ein freies Programmpaket, das es ermöglicht, Windows-Funktionen wie die Datei- und Druckdienste unter anderen Betriebssystemen zu nutzen und die Rolle eines Domain Controllers anzunehmen. Es implementiert hierfür unter anderem das SMB/CIFS-Protokoll.
Da die Software unter der GPL frei verfügbar ist, wird sie als Alternative zu Microsoft-Windows-Server-Betriebssystemen eingesetzt.
Samba ist eine quelloffene Netzwerksoftware, die es Rechnern mit einem Unix- oder Linux-Betriebssystem ermöglicht, auf die Freigaben von Netzwerkressourcen aus Windows-Netzwerken (bzw. dem Microsoft-Verzeichnisdienst „Active Directory“) zuzugreifen, beispielsweise auf Dateien und Drucker. Darüber hinaus kann die Software auch dazu verwendet werden, Unix-/Linux-basierte Server oder Controller in einem solchen Netzwerk zu installieren und deren Ressourcen freizugeben.
Die gängigen Protokolle Server Message Block (SMB) bzw. Common Internet File System (CIFS, eine offene Version von SMB) sind die Basis, auf der Samba aufsetzt. Der Name „Samba“ spielt auf die Abkürzung „SMB“ an.
Samba unterliegt der GNU General Public License, ist auf vielen Unix-Systemen vorinstalliert und auf fast allen lauffähig. Die Gruppe, die Samba entwickelt, besitzt einen Kern von etwa 20 Personen. Ihre Arbeit wird von mehreren Unternehmen sowohl durch finanzielle als auch durch personelle Beiträge unterstützt, unter anderem von IBM.
Server Message Block als Grundlage
Server Message Block, abgekürzt SMB, ist ein Protokoll für Datei-, Druck- und andere Netzwerkdienste. SMB ist bereits in den frühen 1980er Jahren bei IBM entstanden. Es folgt einem Client-Server-Modell: SMB-Server veröffentlichen Ressourcen im Netzwerk und Clients können auf diese Ressourcen zugreifen, indem sie Anfragen an einen SMB-Server richten und entsprechende Antwort erhalten. Die freigegebenen Ressourcen werden in der obersten Ebene als „Shares“ bezeichnet. Es kann sich dabei zum Beispiel um Drucker handeln, oder um Knoten eines Dateisystems, die durch Verknüpfung untereinander eine Ordnerstruktur bilden können. Ein Server kann beliebige Teile seines lokalen Dateisystems als Shares bereitstellen, daher ist die für einen Client sichtbare Hierarchie teilweise unabhängig von der Struktur auf dem Server. Die Zugriffsrechte werden durch Access Control Lists (ACL, Zugriffssteuerung) festgelegt.