Dieser Artikel ist Teil der Reihe selbstgebauter Ubuntu 20.04 Homeserver/NAS


Das Betriebssystem wurde in den letzten Teilen installiert und die wichtigsten Grundkonfigurationen vorgenommen. Nun können die ersten Dienste auf dem Homeserver installiert werden.

In diesem Teil werden die Ordnerfreigaben für das lokale Heimnetz erstellt. Die Software, die hierfür verwendet wird, ist SAMBA-Server. Damit können über das SMB/CIFS-Protokoll Freigaben im lokalen Netz erstellt werden. Diese Art der Freigaben wird von allen Betriebssystemen wie Windows, MacOS, Linux usw. unterstützt. Die Freigaben können beispielsweise in Windows als Netzlaufwerk eingebunden werden, sodass man bequem auf alle Dateien auf dem Homeserver zugreifen kann. Auch mit Software wie dem Mediacenter Kodi kann man direkt und ohne Umwege über diese Freigaben auf Filme, Videos und Bilder zugreifen. Ein weiterer Vorteil ist, dass die Datenübertragung mit dem SMB/CIFS-Protokoll sehr schnell ist, sodass auch große Dateimengen im lokalen Netzwerk schnell auf den Homeserver übertragen werden können.

Aus Sicherheitsgründen ist der Zugriff auf diese Freigaben auf das Heimnetz beschränkt, d.h. es werden keine Freigaben im Router erstellt, über die man aus dem Internet zugreifen könnte. Die Datenübertragung über das Internet sollte ausschließlich verschlüsselt erfolgen. SMB ist jedoch unter Umständen unverschlüsselt.

Der Zugriff über das Internet wird im folgenden Teil konfiguriert. Hierfür wird eine sichere, verschlüsselte Verbindung über Nextcloud verwendet.

In diesem Beispiel werden vier Benutzer angelegt.

Tom: Der Name ist willkürlich gewählt. Hier wird eine private Freigabe für das Familienmitglied Tom erstellt, auf welche nur dieser User Zugriff hat.
Lena: Ebenfalls ein willkürlich gewählter Name für ein weiteres Familienmitglied.
Media: Ein spezieller Benutzername für den Zugriff auf Bilder, Videos usw. mit einem Mediaplayer wie Kodi.
smb: Ein Benutzername, der nur vom System verwendet wird, um Dateien zu schreiben. Damit werden Probleme mit den Dateiberechtigungen vermieden, da ansonsten eine von Tom erstellte Datei nicht von Lucy geändert werden könnte. Man könnte stattdessen auch jeden anderen Benutzer (z.B. Tom) verwenden. Ich erstelle der Verständlichkeit halber einen eigenen Benutzer.

Anschließend werden vier Freigaben erstellt.

Tom: Eine private Freigabe, auf die nur Tom zugreifen kann.
Lena: Eine private Freigabe, auf die nur Lena zugreifen kann.
Familie: Auf diese Freigabe haben Tom und Lena Zugriff.
Media: Eine Freigabe für Videos und Bilder. Tom und Lena haben Lese- und Schreibzugriff. Der User media kann jedoch nur Dateien lesen und nichts verändern.

Achtung: Der Administrator des Homeservers hat immer vollständigen Zugriff auf alle Daten auf der Festplatte. Das bedeutet, die Passwörter schützen lediglich vor unbefugtem Zugriff über das Netzwerk. Das sollte man allen Familienmitgliedern auch so kommunizieren. Vor unbefugtem Zugriff durch den Administrator auf private Daten schützt nur eine Verschlüsselung der Dateien. Das gilt übrigens auch für die großen Clouds wie Google Drive, Dropbox, Onedrive usw.

Installation des Sambaservers und Anlegen der Benutzer

Im ersten Schritt wird der Samba-Server installiert. Dies geschieht mit folgendem Befehl.

sudo apt install -y samba samba-common

Dann werden die Systembenutzer im Betriebssystem angelegt. Diese Benutzer werden nur vom System dazu verwendet, auf Samba-Freigaben zuzugreifen. Daher wird kein Homeverzeichnis angelegt und der Login direkt am System deaktiviert. Die Abfragen von Name, Zimmer usw. können einfach mit Enter übersprungen werden.

sudo adduser --no-create-home --disabled-login --shell /bin/false tom
sudo adduser --no-create-home --disabled-login --shell /bin/false lena
sudo adduser --no-create-home --disabled-login --shell /bin/false media
sudo adduser --no-create-home --disabled-login --shell /bin/false smb

Im folgenden Schritt werden die Passwörter vergeben, mit denen die Freigaben geschützt werden.

sudo smbpasswd -a tom
sudo smbpasswd -a lena
sudo smbpasswd -a media

Übrigens: Wenn man die Passwörter später ändern möchte, dann kann der Befehl einfach erneut ausgeführt werden.

Anlegen der Ordner

Nun werden die Ordner angelegt, in denen die Daten gespeichert werden, die man auf den Homeserver überträgt. Da das RAID-System für die Daten unter /mnt/storage eingebunden wurde, müssen alle Order als Unterordner von mnt/storage/ angelegt werden. Ansonsten würden die Daten auf der Systemplatte landen und wären nicht durch das RAID geschützt.

sudo mkdir -p /mnt/storage/shares/{tom,lena,media,familie}
sudo chown -R smb: /mnt/storage/shares

Einrichten der Freigaben

Die Freigaben werden über die Konfigurationsdatei /etc/samba/smb.conf konfiguriert. Die Datei kann mit jedem Texteditor bearbeitet werden. Mit dem folgenden Befehl wird die Konfigurationsdatei mit dem Texteditor Nano geöffnet, da dieser einsteigerfreundlich und leicht zu bedienen ist.

sudo nano /etc/samba/smb.conf

In der Datei scrollt man mit der Pfeil-nach-unten Taste ganz ans Ende. Dort werden folgende Zeilen eingefügt, um die Freigaben zu erstellen.

[Tom]
comment = Tom
path = /mnt/storage/shares/tom
write list = tom
valid users = tom
force user = smb

[Lena]
comment = Lena
path = /mnt/storage/shares/lena
write list = lena
valid users = lena
force user = smb

[Familie]
comment = Familie
path = /mnt/storage/shares/familie
write list = tom,lena
valid users = tom,lena
force user = smb

[Media]
comment = media
path = /mnt/storage/shares/media
write list = tom,lena
valid users = tom,lena,media
force user = smb

Damit der Zugriff auch mit Windows 10 funktioniert, muss noch eine Zeile in der Konfigurationsdatei geändert werden. Und zwar muss die Zeile „map to guest = bad user“ zu „map to guest = never“ geändert werden.

Wenn man diese Zeile nicht ändert, bekommt man beim Zugriffsversuch mit Windows 10 eine Fehlermeldung wie: „Auf 192.168.30.119 kann nicht zugegriffen werden. Vergewissern Sie sich, dass der Name richtig geschrieben wurde. Möglicherweise besteht ein Netzwerkfehler. Klicken Sie auf Diagnose“.

map to guest = bad user

map to guest = never

Mit den Tastenkombinationen Strg+o wird die Datei gespeichert. Mit Strx+x wird der Editor wieder beendet.

Die Angabe in den eckigen Klammern ist der Name der Freigabe, mit der diese im Netzwerk sichtbar ist.
Der Kommentar ist ein beliebiges Wort oder Satz, der die Freigabe beschreibt.
Hinter „path“ wird der Pfad im Dateisystem angegeben, wo die Daten für diese Freigabe gespeichert werden.
Write list ist eine Liste mit allen Benutzernamen, die über das Netzwerk auf dieser Freigabe Dateien verändern dürfen. Dazu gehört auch das Erstellen und Löschen von Dateien und Ordnern.
Valid users ist eine Liste mit Benutzernamen, die auf die Freigabe zugreifen können. Ist ein Benutzername in der Liste „valid users“, nicht jedoch in der Liste „write list“, dann darf der Benutzer zwar auf die Freigabe zugreifen und Dateien lesen, nicht jedoch verändern.
Force user gibt den Benutzername an, mit dem Samba die Daten auf die Festplatte schreibt. So wird sichergestellt, dass alle Daten mit demselben Benutzernamen geschrieben werden. Fehlt die Angabe, wird der Benutzer verwendet, der auf die Freigabe zugreift, also Tom, Lena etc.

Damit die Änderungen aktiv werden, muss der Samba-Server einmal neu gestartet werden.

sudo systemctl restart smbd.service

Schnellzugriff auf Freigaben mit Windows 10

Für Tests, oder wenn man nur gelegentlich auf eine Freigabe zugreifen will, lohnt es sich nicht, diese dauerhaft als Netzlaufwerk einzubinden. Die schnellste und einfachste Möglichkeit mit Windows 10 auf die Freigaben des Homeservers zuzugreifen ist, die IP-Adresse des Homeservers in die Adressleiste des Explorers einzugeben. Und zwar in folgender Form: \\192.168.30.153

Nach der Passworteingabe werden alle Freigaben die unter dieser Adresse zu finden sind im Windows-Explorer angezeigt.

Schnellzugriff auf Netzwerkfreigaben mit Windows 10

Freigaben unter Windows 10 dauerhaft als Netzlaufwerk einbinden

Wenn man häufig über die Freigaben auf den Homeserver zugreift, ist der Schnellzugriff unpraktisch und unbequem. In diesen Fall ist es sinnvoller die Freigaben dauerhaft als Netzlaufwerk im Windows Explorer einzubinden.

Zur Einrichtung des Netzlaufwerks öffnet man den Explorer und macht einen Rechtsklick auf das Dieser-PC-Icon. Dann klickt man auf Netzlaufwerk verbinden.

Windows 10 Netzlaufwerk verbinden

Im Feld „Ordner“ gibt man die Netzwerkadresse der Freigabe ein. Beispielsweise \\192.168.30.153\Media.

Mit einem Klick auf „Fertig stellen“ wird ein neues Laufwerk im Windows-Explorer erstellt, das jedoch tatsächlich den Inhalt der Freigabe auf dem Homeserver zeigt.

Netzlaufwerk in Windows 10 eingerichtet

Schnellzugriff auf die Freigaben mit Ubuntu Desktop

Auch unter Ubuntu ist ein einfacher Schnellzugriff auf die Freigaben möglich. Dies ist besonders geeignet, wenn die Freigaben nicht dauerhaft verfügbar sein müssen, z.B. für einen Gast. Für den schnellen Zugriff öffnet man Dateien und wählt in der linken Menüleiste Andere Orte. Im unteren Bereich gibt es das Feld mit Server verbinden. Hier gibt man die Adresse des Homeservers ein, in der Form smb://192.168.30.153.

Ubuntu Desktop auf SMB-Freigaben zugreifen

Mit einem Klick auf Verbinden werden alle unter dieser Adresse gefundenen Freigaben angezeigt.

Dauerhaftes Einbinden der Freigaben auf einem Ubuntu Desktop-System

Bei allen selbst genutzten Computern ist es praktischer, die Freigaben dauerhaft zu mounten, damit man immer ein bequemer Zugriff auf den Homeserver möglich ist. Dies ist ein bisschen aufwändiger als unter Windows, dafür sind die Freigaben anschließend nahtlos in das Dateisystem eingebunden und können genau wie lokale Ordner auf der Festplatte genutzt werden.

Damit Ubuntu Sambafreigaben beim Start mounten kann, muss das Paket cifs-utils installiert werden.

sudo apt install cifs-utils

Anschließend werden die Ordner auf der lokalen Festplatte angelegt, in denen die Freigaben unseres Homeservers später zu finden sein werden. In diesem Fall wird ein Ordner namens Homeserver erstellt und unterhalb, je ein Ordner für die Freigaben.

mkdir -p ~/Homeserver/{Tom,Media,Familie}

Damit die Zugangsdaten nicht nach jedem Neustart neu eingegeben werden müssen, werden diese in einer Datei abgelegt, auf welche nur der Rootuser Zugriff hat. Zuerst wird die Datei erstellt und anschließend mit dem Texteditor geöffnet

mkdir ~/.credentials
touch ~/.credentials/smbcredentials
nano ~/.credentials/smbcredentials

in diese Datei kommen Benutzername und Passwort in folgender Form.

username=tom
password=MEINPASSWORT

Die Datei wird mit Strg+o gespeichert und mit Strg+x wird der Texteditor wieder geschlossen. Aus Sicherheitsgründen werden nun die Lese und Schreibrechte zu dieser Datei so angepasst, dass nur der Rootuser Zugriff darauf hat.

sudo chown root: .credentials/smbcredentials
sudo chmod 600 .credentials/smbcredentials

Damit Ubuntu die Freigaben kennt müssen diese in die Datei /etc/fstab eingetragen werden. Die Datei wird wieder mit dem Texteditor geöffnet und folgender Text am Ende der Datei eingefügt.

sudo nano /etc/fstab
#Mount Homeserver
//192.168.30.153/Tom /home/MEINUSERNAME/Homeserver/Tom cifs credentials=/home/MEINUSERNAME/.credentials/smbcredentials,users,uid=1000,gid=1000 0 0
//192.168.30.153/Familie /home/MEINUSERNAME/Homeserver/familie cifs credentials=/home/MEINUSERNAME/.credentials/smbcredentials,users,uid=1000,gid=1000 0 0
//192.168.30.153/Media /home/MEINUSERNAME/Homeserver/Media cifs credentials=/home/MEINUSERNAME/.credentials/smbcredentials,users,uid=1000,gid=1000 0 0

Es muss darauf geachtet werden, dass jeder Eintrag in einer langen Zeile eingetragen wird. Also dass jede Zeile mit //192.168.30….. beginnt.

MEINUSERNAME muss durch den eigenen Benutzernamen ersetzt werden, mit welchem man sich an seinem Laptop oder Desktop angemeldet hat. Bei UID und GID muss es sich um die IDs des eigenen Benutzers handeln. Bei einer Standardinstallation mit nur einem Benutzer ist dies 1000 und muss dementsprechend nicht angepasst werden. Wenn aber mehrere Benutzer einen Computer nutzen, haben diese unterschiedliche IDs. Welche das ist lässt sich im Terminal mit dem einfachen Befehl id herausfinden.

Nach einem Neustart sollten die Freigaben unseres Homeservers nun im lokalen Dateisystem eingebunden sein, ganz so als würden sie auf der lokalen Festplatte liegen. Wer ungeduldig ist, oder den Rechner nicht neu starten möchte, kann das Einbinden der Freigaben auch manuell erledigen mit dem Befehl.

sudo mount -a
Ubuntu Netzwerkfreigaben dauerhaft eingebunden

Übersicht: Ubuntu 20.04 Homeserver/NAS, Teil 1
Installation des Betriebssystems: Ubuntu 20.04 Homeserver/NAS, Teil 2
Grundkonfiguration: Ubuntu 20.04 Homeserver/NAS, Teil 3
Ordnerfreigaben: Ubuntu 20.04 Homeserver/NAS, Teil 4
Nextcloud: Ubuntu 20.04 Homeserver/NAS, Teil 5
Plex Mediaserver: Ubuntu 20.04 Homeserver/NAS, Teil 6
Backup: Ubuntu 20.04 Homeserver/NAS, Teil 7


18 Comments

  1. Nützlich wäre noch die Info, dass bei aktivierter UFW Firewall Samba erst per „sudo ufw allow samba“ erlaubt werden muss.

  2. Anonymous

    Hallo Niko,

    ist die Ordnerfreigabe auch mit 20.04.2 wie beschrieben möglich?
    Bisher klappt das bei mir nicht, da die Berechtigung fehlt.

  3. Anonymous

    Hallo Niko,

    nach viel Rumprobiere und Recherche hab ich festgestellt, dass sich die Ordnerfreigabe etc. mit demaktuellem Ubuntu 20.04.2 und Samba 4.11.7 nicht wie beschrieben bewerkstelligen lässt wg. bugs etc. Infos dazu sind im ubuntuusers forum zu finden.

    • Niko

      Im Ernst? Das wäre ja wirklich ärgerlich. Das Ganze funktioniert so mehr oder weniger seit 10 Jahren.
      4.11.7 scheint dann nur bei einer Neuinstallation installiert zu werden. Ich habe 4.11.6 und keine Probleme. Ich teste das bei Gelegenheit mal mit einer Neuinstallation. Aber das schaffe ich frühestens am Wochenende.

  4. Habt ihr eine Lösung bezüglich der Ordnerfreigabe entdeckt?
    Reicht es eine ältere samba Version zu nehmen?
    bzw. habe ich dasselbe Problem? ich kann die in Samba angelegten Verzeichnisse sehen, sobald ich versuche darauf zuzugreifen erhalte ich die Meldung“ Auf \\…konnte nicht zugegriffen werden“

    • Niko

      Deine Samba-Version kannst du mit samba -V anzeigen lassen.
      Ich kann das Problem leider nicht nachvollziehen. Ich habe soeben ein komplett neues System mit frisch heruntergeladenem Ubuntu 20.04.2 Server Datenträger installiert. Bei mir wird Samba 4.11.6 installiert und alles funktioniert wie beschrieben.

      • Anonymous

        Danke für die Antwort.

        Ich vermute mal das Problem lag bei mir und ich hatte nur das Raid nicht eingebunden. Jetzt funktioniert es.

    • Joo du musst auch darauf achten, dass du keine Leerzeichen in der Freigabe hast – der String für den Ordnerpfad wird in diesme Fall nicht korrekt dargestellt.

  5. Ich kann das Netzlaufwerk unter Windows verbinden. Wenn ich dann was darauf speichern möchte, bekomme ich die Meldung, dass der Zugriff auf diesen Ordner verweigert wird. Das liegt wohl am Besitzer „root“. Den Besitzer kann ich unter Windows aber nicht ändern (auch Zugriff verweigert). Hat jemand eine Lösung für dieses Problem?

  6. Super Erklärung, danke dafür.
    Bin alles genau durchgegangen jedoch habe ich unter WIndows in meinem Fall keine Berechtigung für den Zugriff auf die einzelnen Ordner.
    Weder für guest noch für den zugewiesenen Benutzer.
    Habe herumprobiert, bin aber nicht dahinter gekommen; hat jemand dazu vielleicht einen Tipp?
    Im Grunde sieht das ja nicht so komplieziert aus, also vielleicht hängt die Berechtigung ja an einer ganz anderen Stelle. Bin aber nicht so erfahren in Linux. Habe die 4.11.16 Version und Ubuntu Server 20.04.2 LTS
    Broadcast scheint auch nicht zu laufen, das habe ich aber nicht weiter verfolgt.
    Könnte natürlich auch an WIndows leiegen, aber dort ist alles default.
    Danke 🙂

    • Ok, konnte das Problem lösen:
      1. Musste ich dem generellen System Admin Benutzer mit „Force User = [admin Benutzer]“ bei jedem freizugebenden Ordner hinzufügen und
      2. waren auf dem Raid Verbund nicht von Hausaus die rechte auf „drwxrwxrwx“ gesetzt.

  7. Hallo Niko,
    gibt es für das Problem mit dem Zugriff auf die Ordnerfreigaben unter Wndows 10 schon eine Lösung?
    Ich habe das gleiche Problem wie Ben.

  8. Hallo Niko,

    das Thema hat sich erledigt! Mir ist ein dummer Anfängerfehler passiert: Case Sensitive
    nicht beachtet in der smb.conf und mein ‚heimnetz User‘ aus der 18.04er Installlation hatte keine Adminrechte.

    LG
    Gerd

  9. Hi Niko,
    danke für die geniale Anleitung, bis hierhin läuft das schon mal.

    Was mir noch fehlt, wo konfiguriere ich das s.g. Powermanagement für den Server, also das die HDs und das System bei Nichtnutzung in den Sleepmodus gehen und bei Anfragen wieder hochfahren?

    Gibt es nicht unter KDE (also unter der grafischen Oberfläche) einen gutes Raid-Monitorprogramm, dass ich den aktuellen Status des Raid-Systems beobachten kann?

    Wäre noch wichtig.

    Tydan

    • Moin,

      auch wenn die Antwort spät kommt aber vielleicht bringt es ja noch was. Statt einer grafischen Oberfläche, die sehr viel Ressourcen frisst (und damit viel Strom kostet) würde ich Webmin empfehlen. Eine komplette Steuerungsoberfläche als Webdienst.

      Gruß

      Sgt. Bruno

  10. Hallo,
    bin komplett neu bei Ubuntu, habe mir nach der genialen Anleitung einen Server aufgesetzt.
    Jetzt hänge ich bei einer Eingabe:
    „sudo chown -R smb: /mnt/storage/shares“
    Wenn ich das eingebe kommt folgende Meldung:chown:
    chown: ungültige Spezifikation: »smb:“
    Habe och Anleitung einfach weiter installiert – Ergebnis:
    Verzeichnis wird am Windows PC angezeigt, bei zugriff wird Benutzer und Passwort abgefragt, bei falsch Eingabe kommt man nicht weiter, bei der richtigen Eingabe kommt die Windows Fehlermeldung:
    „Sie haben eventuell keine Berechtigung…“

  11. Hallo,
    bin komplett neu bei Ubuntu, habe mir nach der genialen Anleitung einen Server aufgesetzt.
    Jetzt hänge ich bei einer Eingabe:
    „sudo chown -R smb: /mnt/storage/shares“
    Wenn ich das eingebe kommt folgende Meldung:chown:
    chown: ungültige Spezifikation: »smb:“
    Habe och Anleitung einfach weiter installiert – Ergebnis:
    Verzeichnis wird am Windows PC angezeigt, bei zugriff wird Benutzer und Passwort abgefragt, bei falsch Eingabe kommt man nicht weiter, bei der richtigen Eingabe kommt die Windows Fehlermeldung:
    „Sie haben eventuell keine Berechtigung…“