1903700

Tutorial: Netzwerken mit Samba - so geht's

18.06.2022 | 08:25 Uhr | Thorsten Eggeling

Netzwerkfreigaben mit SMB/CIFS sind die gebräuchlichste Methode für den Dateitransfer zwischen PCs im gemischten Netzwerk. Linux, Windows und Mac-OS unterstützen das Protokoll standardmäßig.

Linux-Dateimanager können ohne zusätzliche Software auf Netzwerkfreigaben von Windows- und Linux-Rechnern zugreifen. Soll der Linux-PC ebenfalls Freigaben anbieten, installiert man den Samba-Server. Die Basiskonfiguration ist nicht kompliziert, das Zusammenspiel von Samba-Einstellungen, Benutzerkonten und Rechten im Dateisystem erfordert jedoch einen gewissen Aufwand. Wie hoch der ist, hängt davon ab, ob Sie nur einen Ordner im Home-Verzeichnis freigeben wollen oder einen beliebigen anderen Ordner, ferner ob mehrere Benutzer nur Lese- oder auch Schreibzugriff erhalten sollen. Hilfe bei der Samba-Konfiguration bieten Tools und Webanwendungen. Aber auch für diese sind Kenntnisse der manuellen Konfiguration von Vorteil. Wir liefern diese Grundkenntnisse.

Siehe auch:   SSH - So klappt die Fernwartung mit Linux

1. Samba-Server installieren

Wer Ordner im lokalen Netzwerk freigeben möchte, muss in jedem Fall die Samba-Serverkomponente installieren. Die Vorgehensweise ist entweder geführt oder manuell: 

Ubuntu: Freigaben aus dem Home-Verzeichnis kann unter Ubuntu direkt der Dateimanager erledigen (Benutzerfreigabe). Klicken Sie den gewünschten Ordner mit der rechten Maustaste an und wählen Sie im Kontextmenü „Freigabe im lokalen Netzwerk“. Setzen Sie ein Häkchen vor „Diesen Ordner freigeben.“ Nun erscheint eine Meldung, in der Sie auf „Freigabedienst einrichten“ klicken, danach auf „Installieren“ und dies mit Ihrem Passwort bestätigen. Zurück im Fenster „Ordner freigeben“ können Sie nun ein Häkchen vor „Gastzugriff (für Nutzer ohne Benutzerkonto)“ setzen. Damit erlauben Sie anderen PCs im Netzwerk ohne Anmeldung Lesezugriff auf den freigegebenen Ordner. Ansonsten gibt es Lesezugriff nach vorheriger Anmeldung für Sie selbst und für andere Nutzer, die ein Konto auf dem PC mit der Freigabe besitzen. Schreibzugriff ist möglich, wenn Sie ein Häkchen vor „Anderen erlauben, Dateien in diesem Ordner zu erstellen und zu löschen“ setzen. Damit die Anmeldung funktioniert, müssen Sie zusätzlich ein Samba-Passwort vergeben (siehe Punkt 2).

Freigabe einrichten: Ubuntu fordert bei der Ersteinrichtung einer Benutzerfreigabe zur Installation des Samba- Servers auf. Mint-Nutzer müssen die Komponente manuell installieren.
Vergrößern Freigabe einrichten: Ubuntu fordert bei der Ersteinrichtung einer Benutzerfreigabe zur Installation des Samba- Servers auf. Mint-Nutzer müssen die Komponente manuell installieren.

Linux Mint und andere Distributionen: Mint-Nutzer müssen den Samba-Server manuell installieren, selbst wenn sie nur Benutzerfreigaben verwenden wollen. Auch Ubuntu-Nutzer installieren den Samba-Server oft besser manuell, entweder weil zunächst keine Benutzerfreigabe erstellt werden soll oder weil eine grafische Oberfläche fehlt. Die Installation über einen SSH-Fernzugriff ist auf diesem Weg natürlich auch möglich, etwa bei Raspberry- Pi-OS (Raspberry Pi). Führen Sie im Terminal diese drei Zeilen aus: 

sudo apt update
sudo apt upgrade
sudo apt install samba

Unter Linux Mint lässt sich anschließend im Dateimanager über den Kontextmenüpunkt „Freigabeoptionen“ eines Ordners die Freigabe aktivieren. Die Optionen sind die gleichen wie oben für Ubuntu beschrieben.

2. Gruppenzugehörigkeit und Samba-Passwort

Nicht jeder hat das Recht: Damit ein Benutzer Freigaben erstellen darf, muss er zur Gruppe „sambashare“ gehören. Mint-Nutzer legen die Gruppe über „Benutzer und Gruppen“ fest.
Vergrößern Nicht jeder hat das Recht: Damit ein Benutzer Freigaben erstellen darf, muss er zur Gruppe „sambashare“ gehören. Mint-Nutzer legen die Gruppe über „Benutzer und Gruppen“ fest.

Nur das Systemverwalterkonto, das Sie bei der Linux-Installation als Erstbenutzer erstellt haben, darf Benutzerfreigaben über den Dateimanager erstellen. Hintergrund dafür ist die Tatsache, dass ein Benutzerkonto zur Gruppe „sambashare“ gehören muss, um Ordner freigeben zu dürfen. Das bei der Installation eingerichtete Erstbenutzerkonto ist automatisch Mitglied von „sambashare“. In den Mint-Systemeinstellungen können Sie über „Benutzer und Gruppen“ weitere Konten zum Mitglied von „sambashare“ machen. Ubuntu-Nutzer benötigen dafür das Terminal: 

sudo usermod -aG sambashare [User] 

Ersetzen Sie den Platzhalter „[User]“ durch die Bezeichnung des Benutzerkontos, das Benutzerfreigaben erstellen darf. Die Terminalmethode funktioniert natürlich auch unter Mint.

Samba-Passwort: Samba verwendet bei der Anmeldung zwar die Linux-Benutzerkonten, aber eine eigene Passwort-Datenbank. Sie müssen daher den gewünschten Benutzerkonten folgendermaßen ein Samba-Passwort zuweisen:

sudo smbpasswd -a [User]

Den Platzhalter „[User]“ ersetzen Sie durch die Bezeichnung des Benutzerkontos. Tippen Sie das Passwort ein und bestätigen Sie es. Das Samba-Passwort darf identisch mit dem Linux-Anmeldepasswort sein, kann aber auch abweichen. Es ist jedoch empfehlenswert, auf allen Linux- und Windows- PCs die gleiche Kombination von Benutzernamen und Passwörtern zu verwenden.

3. Samba-Konfiguration und globale Freigaben

Freigaben für alle Benutzer: Entfernen Sie die Kommentarzeichen beim Block „[homes]“. Dann kann jeder Benutzer von anderen PCs aus auf sein Home-Verzeichnis zugreifen.
Vergrößern Freigaben für alle Benutzer: Entfernen Sie die Kommentarzeichen beim Block „[homes]“. Dann kann jeder Benutzer von anderen PCs aus auf sein Home-Verzeichnis zugreifen.

Die gesamte Samba-Konfiguration erfolgt in der Datei „/etc/samba/smb.conf“. Die standardmäßig installierte Beispielkonfiguration enthält Kommentare in englischer Sprache, die die Funktion der einzelnen Optionen erläutert. Der Hauptabschnitt ist mit „[global]“ eingeleitet. Alle weiteren Abschnitte in eckigen Klammern sind Freigabedefinitionen.

Änderungen in der „smb.conf“ werden wirksam, wenn Sie den Samba-Server die Konfigurationsdatei neu einlesen lassen:

sudo systemctl restart smbd

Alle Home-Verzeichnisse freigeben: In der „smb.conf“ gibt es einen auskommentierten Abschnitt, der mit „;[homes]“ beginnt. Entfernen Sie die Kommentarzeichen, um die Home-Verzeichnisse aller Benutzer standardmäßig freizugeben. Soll Schreibzugriff erlaubt sein, ändern Sie „read only = yes“ auf „read only = no“. Wenn ein authentifizierter Benutzer auf den Server zugreift, sieht er nur sein eigenes Home-Verzeichnis als Freigabe.

Allgemeine Freigaben: Eine globale Freigabe lässt sich beispielsweise über diese drei Zeilen erstellen, die Sie am Ende der Datei „smb.conf“ einfügen: 

[data1]
path = /data1 
writeable = no 

Damit wird das Verzeichnis „/data1“ unter der Bezeichnung „data1“ freigegeben. Der Ordner „/data1“ muss existieren und die Benutzer müssen auf der Ebene des Dateisystems wenigstens Leserechte besitzen. Das ist standardmäßig der Fall, wenn Sie das Verzeichnis mit

sudo mkdir /data1

erstellen. Mit der zusätzlichen Zeile 

guest ok = yes 

ergänzen Sie die Freigabedefinition für den Fall, dass Sie auch Benutzern ohne Konto den Zugriff erlauben wollen.

4. Freigaben mit Schreibberechtigung erstellen

Zugriffsrechte festlegen: Damit neue Elemente im Dateisystem auch für andere Benutzer Schreibrechte erhalten, müssen die Freigabeoptionen angepasst werden.
Vergrößern Zugriffsrechte festlegen: Damit neue Elemente im Dateisystem auch für andere Benutzer Schreibrechte erhalten, müssen die Freigabeoptionen angepasst werden.

Damit Benutzer Dateien über das Netzwerk neu erstellen oder ändern können, genügt aus der Sicht von Samba die Änderung von „writeable = no“ auf „writeable = yes“. Das allein reicht jedoch noch nicht für den vollen Zugriff aus. Der Ordner „/data1“ im Beispiel aus Punkt 3 gehört Benutzer und Gruppe „root“, alle anderen Benutzer haben auf der Ebene des Dateisystems nur Leserechte. Um das zu ändern, verwenden Sie folgende vier Befehlszeilen: 

sudo groupadd smbadmin 
sudo chown -R root:smbadmin /data1 
sudo find /data1 -type d -exec chmod 775 {} + 
sudo find /data1 -type f -exec chmod 664 {} + 

Die letzten drei Befehlszeilen arbeiten rekursiv, berücksichtigen also auch unter „/data1“ bereits vorhandene Ordner und Dateien. Die neu erstellte Gruppe „smbadmin“ – die Bezeichnung können Sie frei wählen – und der Besitzer „root“ erhalten Vollzugriff, andere Benutzer inklusive Gäste dürfen weiterhin nur lesen.

Fügen Sie Ihr eigenes Benutzerkonto und weitere Konten, die eine Schreibberechtigung erhalten sollen, zur Gruppe „smbadmin“ hinzu: 

sudo usermod -aG smbadmin [Benutzer] 

Den Platzhalter „[Benutzer]“ ersetzen Sie dabei jeweils durch den Benutzernamen. Melden Sie sich ab und wieder an, damit Linux die neue Gruppenzugehörigkeit berücksichtigt.

Berechtigungen korrekt setzen: Der Schreibzugriff durch mehrere Benutzer auf Elemente des Dateisystems hat unerwünschte Nebenwirkungen. Erstellt ein Benutzer Dateien neu oder ändert er deren Inhalt, wird er zum Eigentümer. Danach haben andere Benutzer nur noch Leserechte. Um das zu ändern, erstellen Sie eine Freigabedefinition mit diesen neun Zeilen: 

[data1] 
path = /data1 
writeable = no 
write list = @smbadmin
inherit owner = yes
force group = smbadmin 
force directory mode = 770 
create mask = 664 
force create mode = 664

„write list = @smbadmin“ gewährt der Gruppe „smbadmin“ Schreibzugriff.

Für alle anderen Benutzer und Gruppen bleibt es durch „writeable = no“ bei der Berechtigung „Nur lesen“. Die weiteren Optionen sorgen dafür, dass neu erstellte Elemente dem Besitzer des darüberliegenden Ordners („inherit owner“) sowie der Gruppe „smbadmin“ gehören und beide Vollzugriff erhalten.

Tipp: Die 10 wichtigsten Linux-Befehle für Netzwerk und Internet

5. Zugriff auf Netzwerkfreigaben

Zugriff auf Freigaben: Über eine URL in der Form „smb://[Servername oder IP-Adresse]]/[Freigabename]“ lässt sich jede Freigabe im Dateimanager direkt aufrufen.
Vergrößern Zugriff auf Freigaben: Über eine URL in der Form „smb://[Servername oder IP-Adresse]]/[Freigabename]“ lässt sich jede Freigabe im Dateimanager direkt aufrufen.

Unter Linux greifen Sie über den Dateimanager auf Samba-Freigaben zu. Mint-Nutzer gehen auf „Netzwerk“, Ubuntu-Nutzer auf „Andere Orte“. Sie sehen dann die Namen der Samba-Server im lokalen Netzwerk. Ob auch eine Liste mit freigegebenen Ordnern erscheint, wenn Sie einen Server öffnen, hängt von der Samba-Version des Servers ab. Ab einschließlich Version 4.11 erhalten Sie nur die Fehlermeldung „Empfangen der Freigabeliste vom Server ist gescheitert“. Andernfalls können Sie den gewünschten Ordner öffnen und sich mit einem Benutzerkonto auf dem Server und dem zugehörigen Samba-Passwort anmelden (siehe Punkt 2).

Windows-Rechner sind im Dateimanager nicht zu sehen. Wenn Sie den Ordner „Windows- Netzwerk“ öffnen, bleibt das Fenster leer. Samba- und Windows-Server beziehungsweise Freigaben werden nicht angezeigt, weil inzwischen aus Sicherheitsgründen die dafür nötige Unterstützung durch das Protokoll SMB 1.0 fehlt. Sie können aber eine Freigabe über die Adressleiste des Dateimanagers (Strg-L) direkt ansprechen.

Verwenden Sie eine URL in der Form

smb://[Servername oder IP-Adresse]/[Freigabename]

Erstellen Sie für die Freigabe mit Strg-D ein Lesezeichen, um Sie künftig mit einfachem Mausklick zu erreichen. Wie Sie einen unbekannten Freigabenamen herausfinden, lesen Sie in Punkt 7.

Windows sieht Samba-Server ebenfalls nicht (siehe Kasten „Windows und Linux- Freigaben“). Hier tippen Sie in die Adressleiste eine URL in der Form

\\[Servername oder IP-Adresse]]\[Freigabename]

ein. Wenn Benutzername und Passwort bei Windows und Linux (Samba-Passwort) identisch sind, erfolgt die Anmeldung automatisch. Andernfalls werden Sie nach den Anmeldeinformationen gefragt.

6. SMB-Version 1 reaktivieren

Aktuelle Netzwerkgeräte kommunizieren über die Protokolle SMB 2.0 oder 3.0. Bei älteren NAS-Geräten kann es aber sein, dass nur SMB 1.0 zur Verfügung steht. In diesem Fall aktivieren Sie unter Linux SMB 1.0 für den Client, also für den Zugriff auf die Freigaben. In die Datei „/etc/samba/ smb.conf“ tragen Sie in den Abschnitt „[global]“ die Zeile 

client min protocol = NT1

ein. Falls der Rechner selbst Freigaben auch über SMB 1.0 bereitstellen soll, konfigurieren Sie zusätzlich

server min protocol = NT1

Speichern Sie die Datei und starten Sie Samba mit 

sudo serviceclt restart smbd 

neu.

Sicherheit: SMB 1.0 ist angreifbar, weil die Datenübertragung – auch von Benutzernamen und Passwörtern – unverschlüsselt erfolgt. In einem privaten Netzwerk mit einer übersichtlichen Anzahl von Benutzern ist das jedoch nur ein geringes Risiko. Trotzdem sollte man mittelfristig Geräte austauschen, die nur SMB 1.0 bieten.

7. Samba-Tool für das Terminal

Welche Freigaben gibt es im Netz? Das Tool smbclient zeigt im Terminal, welche Freigaben Linux- oder Windows- Systeme im Netzwerk bereitstellen.
Vergrößern Welche Freigaben gibt es im Netz? Das Tool smbclient zeigt im Terminal, welche Freigaben Linux- oder Windows- Systeme im Netzwerk bereitstellen.

Die Bezeichnungen der Freigaben lassen sich unter Linux mit der Befehlszeile 

smbclient -U [Benutzer] -L [Servername oder IP-Adresse]

herausfinden. Tippen Sie das Passwort ein, das für die Freigabe auf dem Server erforderlich ist. Sollte das Tool nicht gefunden werden, installieren Sie unter Ubuntu/Mint das Paket „smbclient“. Smbclient kann Arbeitsgruppen beziehungsweise SMB-1.0- Freigaben anzeigen, auch wenn Sie Samba nicht wie in Punkt 6 beschrieben konfiguriert haben. Dazu verwenden Sie die Befehlszeile 

smbclient -U [Benutzer] -L [[Servername oder IP-Adresse] --option="client min protocol"="NT1" 

Unter Windows zeigt der Befehl 

net view \\[[Servername oder IP-Adresse] 

die Freigaben des angegebenen Rechners an.

8. Samba-Freigaben mounten

In der Regel genügen Lesezeichen im Dateimanager, um Samba-Freigaben bei Bedarf komfortabel zu mounten. Wer Freigaben aber permanent im Dateisystem erreichen will, installiert das Paket „cifs-utils“. Eine Freigabe lässt sich dann mit einer Befehlszeile nach diesem Muster einbinden: 

sudo mount -t cifs -o username=[Share-Benutzer],password=[Samba-Passwort] //[Server]/[Freigabe] [Zielverzeichnis]

Für die Platzhalter setzen Sie die Werte für Ihr Netzwerk ein. Das „[Zielverzeichnis]“ muss bereits existieren. Da „root“ der Eigentümer ist, ist kein Schreibzugriff möglich. Das lässt sich aber mit dem folgenden Aufruf ändern: 

sudo mount -t cifs -o username=[Share-Benutzer],password=[Samba-Passwort],uid=[Benutzer],gid=[Gruppe], dir_mode=0775,file_mode=0664 // [MeinServer]/[MeineFreigabe] [Zielverzeichnis] 

Die UID Ihres Linux-Benutzerkontos bekommen Sie mit 

id -u [Benutzername]

heraus und die GID so: 

id -g [Benutername]

Die Optionen sind nötig, damit der Standardbenutzer „[Benutzer]“ auf eine mit sudo eingehängte Freigabe auch Schreibzugriff erhält. Verwenden Sie eine derartige Konfiguration möglichst mit der Freigabedefinition aus Punkt 4. Nur so stellen Sie sicher, dass sich die Zugriffsrechte nicht unerwünscht ändern. Soll die Freigabe sogar automatisch beim Systemstart eingebunden werden, tragen Sie eine Zeile nach diesem Muster in die Datei „/etc/fstab“ ein:

//[MeinServer]/[MeineFreigabe] /mnt cifs rw,_netdev,auto,nofail,user,username=[Share-Benutzer],password=[Samba-Passwort],uid=[Benutzer],gid=[Gruppe],file_mode=0644,dir_mode=0755 0 0 

Zum Testen führen Sie diese Befehlszeile aus: 

sudo mount -a

Die Option „nofail“ ist ratsam, damit das System nicht auf den Samba-Server wartet, falls dieser einmal nicht erreichbar ist.

PC-WELT Marktplatz

1903700