Homeserver Setup mit Ubuntu: Samba Fileserver

Da immer mehr Leute sich gerne zuhause einen eigenen Homeserver aufsetzen um ihre Filme, Bilder oder andere Dateien gemeinsam zu speichern und zu nutzen, wollte ich dieses Thema auch hier im Blog mal aufgreifen.Ich habe selbst einen eigenen, kleinen Homeserver mit 1,5 TB Speicher und einem µATX Board mit Intel Atom Prozessor. Ich nutze den Server hauptsächlich zum lagern von Filmen, die an allen Rechnern im Haus abgespielt werden können. Dafür nutzte ich XBMC an den Clients.

Auf dem Server selbst läuft ein Ubuntu Server Edition 11.04 mit einem Samba Fileserver. Da die Konfiguration von Samba nicht immer auf Anhieb funktioniert werden ich meine Vorstellungen und (gelöste) Probleme hier mal beschreiben in der Hoffung damit jemanden zu helfen.

Die INSTALLATION gestaltet sich unter Ubuntu Gott sei Dank sehr einfach:

sudo apt-get update
sudo apt-get install samba-common samba

Ist Samba installiert hat man verschidenen Möglichkeiten die Konfiguration vorzunehmen. Zum einen kann sie über das Webinterface SWAT, welches eines der bekanntesten Konfigurationstools ist, vorgenommen werden. Andere GUI Tools gibt es auch hier.

Wer ein wenig tiefer gehen möchte, oder wer auf der Suche nach Bugs ist, wird schnell feststellen, dass man um manuelles konfigurieren nicht herumkommt. Unter Ubuntu findet sich die Configfile von Samba under /etc/samba/smb.conf
Diese Datei ist in verschiedene Sektionen aufgeteilt. Es wird hier hauptsächlich zwischen allgemeinen und Freigabespezifischen Einstellungen unterschieden (siehe unten). Ich will hier nicht alle Konfigurationenmöglichkeiten durchkauen, das würde auch den Rahmen dieser Seite sprengen. Mein Ziel war zu Anfang Freigaben wie Musik und Filme für alle (inkl. Nutzer ohne Account) zugänglich zu machen und bestimmte Freigaben wie private Dateien und Backups nur für ausgewählte Nutzer  freizugeben. Nutzer die Schreibrechte in privaten Ordnern haben, sollen auch Schreibrechte in den öffentlichen Ordnern haben.

Hierzu muss man erst einmal die Benutzer im System anlegen. Jeder Nutzer in Samba muss auch ein echter Linuxuser sein. Das heißt wir legen alle Nutzer zu erst einmal im System an:

sudo useradd nutzerXYZ -N -M

Mit diesem Befehl wird der User nutzerXYZ angelegt, es wird jedoch kein Home-Ordner erstellt (-M) und auch keine extra Gruppe für den Benutzer angelegt (-N). Mit

sudo smbpasswd -a nutzerXYZ

wird der Nutzer als Sambauser angelegt und kann fortan benutzt werdern um sich auf Freigaben einzuloggen. Die Benutzer können mit

sudo smbpasswd -x nutzerXYZ
sudo userdel nutzerXYZ

wieder gelöscht werden. Nun schauen wir uns mal die smb.conf selbst an. Die Datei beginnt mit der [global] Sektion in der sämtliche allgemeine Einstellungen stehen.

[global]
	workgroup = HEIMNETZ
	server string = SMB-Server01
   	log file = /var/log/samba/log.%m
	security = user
 	map to guest = bad user
	guest account = nobody
  • workgroup – Ist natürlich die Arbeitsgruppe in der der SMB-Server erscheinen soll.
  • server string – Ist der Hostname der, etwa in der Netzwerkumgebung von Windows, angezeigt wird
  • log file – gibt die Datei an in der alle Ereignisse des SMB-Servers festgehalten werden
  • security – ist diese Option auf “user” gesetzt muss sich ein User am Samba Server zuerst anmelden und sieht dann die verschiedenen Freigaben. Ist die Option auf “share” gestellt, werden dem User erst die Freigaben angezeigt und er loggt sich dann bei einer einzelnen ein
  • map to guest – “bad user” bedeutet wenn sich jemand mit einem User versucht einzuloggen der in Samba nicht existiert. In diesem Fall wird der Benutzer als Gast eingeloggt und hat auch nur entsprechende Rechte.
  • guest account – ist der Account der als Gast verwendet wird. Normalerweise ist diese Option auf nobody gesetzt. Es wäre allerdings auch möglich hier einen anderes Benutzer einzutragen.

Öffentliche Freigabe:

[Freigabe1]
path=/media/Speicher/
comment=oeffentlicher Ordner
public=yes
write list=nutzerXYZ
force create mode=0777
force directory mode=0777
  • path –  ist der Pfad zu freizugebenden Ordner
  • comment  – Kommentar
  • public – Die Freigabe kann grundsätzlich von jedem  angesehen werden. Schreibrechte werden in der nächsten Option geklärt.
  • write list – hier werden die Nutzer angegeben die in der Freigabe Schreibrechte haben. Alle anderen haben automatisch nur read-only zugriff.
  • force create mode/ force directory mode – Hier werden die Datei- und Ordnerrechte für neue Objekte gesetzt. Mit 0777 hat auf eine neu erstellte Datei bzw. einen neu erstellten Ordner jeder Zugriff.

Private Freigabe:

[Freigabe 2]
path=/media/Speicher2/
comment=privater Ordner
public=no
write list=nutzerXYZ
force create mode=0777 
orce directory mode=0777
  • Hier ist nur die Option public = no gesetzt. Das hat zu Folge, dass niemand die Freigabe öffnen kann, es sein denn sein Nutzername steht in der write list

Das sind nur die einfachsten Optionen um solch einen Fileserver aufzusetzen. Es gibt viele weitere Optionen für Schreib- und Leserechte oder Druckerfreigaben. Im Zweifelsfall sucht man sich seine Optionen für die smb.conf am besten in der SMB Manpage.

Vielen Dank für die Infos, habe gerade vor, ein ähnliches System wie du aufzubauen und als 17-jähriger Informatiklehrling fehlt mir ab und zu noch ein wenig die Erfahrung, da nützen mir solche Informationen sehr ;-)

Gruss

1 Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

* Checkbox GDPR is required

*

I agree

Software
2
Bye bye Play Store! Mirroring Play Store Apks to private F-Droid repo

This small tutorial will show you how to setup your own F-Droid repository containing automatically mirrored Play Store apps. Using this private repo, you don’t have to relay on Google Play Store or third party stores anymore to keep non-free apps up-to-date. All you need to have is a Linux …

Software
Ebook reader app for Nextcloud

Because of lack of altenatives I decided to write a small ebook reader plugin for Nextcloud. The task of creating such an app was quite easy: I just forked the files_pdfviewer extension and replaced PDF.js with the Epub.js library. In the app template file, I used the reference ebook reader …

Software
Hacking replay gain audio normalization into Jellyfin

There is already a feature request for audio normalization in Jellyfin media server. This is important if you want to listen to your music collection while always having the same loudness level. Usually, in different recordings or music genres some tracks are louder and others are more quiet. The standard …