Samba Server einrichten
Samba ist ein Programm, welches es ermöglich Datei- und Druckerfreigaben wie in einer Windows Umgebung benötigt zu erzeugen bzw. bereitzustellen. Gerade durch die Integration des SMB/CIFS Protokolls, können diese Dienste vollumfänglich angeboten werden.
Meine Erfahrung zeigt, dass am häufigsten Mischnetzwerke anzutreffen sind. In der Regel werden Workstation doch mit einem Windows als Betriebssystem betrieben. Wobei gerade im privaten Umfeld Server eher auf Linux oder Unix Betriebssystemen aufgesetzt werden. So ist es auch schon seit Jahren bei uns daheim. Daher war es schon immer wichtig, dass eine sinnvolle Möglichkeit des Datenaustauschs besteht. Hier kommt Samba ins Spiel.
In diesem Artikel möchte ich euch zeigen, wie ihr relativ schnell eine funktionierende Samba Konfiguration auf eurem Server installiert bzw. konfiguriert. In meinem Beispiel handelt es sich um einen neu aufgesetzten Ubuntu Server 18.04.4. Weiterhin setze ich voraus, dass wir root Rechte besitzen. Ich verwende an dieser Stelle den User „user“ und dieser ist Mitglied der Gruppe „users“. Bitte passt dies an eure Systeme an.
Fangen wir an……
Wie gesagt, handelt es sich um einen neu aufgesetzten Server. Daher bringen wir diesen erstmal auf den aktuellen Stand. Nicht das alles wegen einer fehlenden Abhängigkeit scheitert. Dies machen wir mit folgendem Einzeiler.
apt-get update && apt-get upgrade
Nachdem alles durchgelaufen ist, die Dauer kann hier stark variieren je nachdem wie aktuell euer Installationsmedium ist, installieren wir nun die benötigten Pakete. Auch hier werden vermutlich noch weitere benötigte Pakete mit geladen und installiert. Wie immer lautet mein Rat dies einfach hinzunehmen. Also setzen wir folgenden Befehl ab.
apt-get install samba
Als nächstes kommen wir schon zur Konfiguration des Servers. Dazu müssen wir dessen Konfigurationsdatei anpassen. Diese findet ihr unter /etc/samba/smb.conf. An dieser Datei müssen nur ein paar Änderungen vorgenommen werden, Daher werde ich immer die darüber stehenden Zeilen mit benennen. Ich lasss diese gerne einfach vom Editor suchen um nicht die gesamte Datei durchforsten zu müssen.
Als erste Stelle finden wir ziemlich weit oben die Definition der „workgroup“. Diese Workgroup wird auch auf Windows Systemen abgefragt und vereinfacht die automatische Erkennung des Servers in der Netzwerkumgebung dieser Systeme. Ich achte daher darauf, dass diese immer gleich ist. In meinem Beispiel „LAN“.
# Change this to the workgroup/NT-domain name your Samba server will part of
workgroup = LAN
Als nächstes geben wir im Abschnitt Networking den IP Bereich an, auf welchen der Server hören soll.
# The specific set of interfaces / networks to bind to # This can be either the interface name or an IP address/netmask; # interface names are normally preferred interfaces = 192.168.2.0/24
Ich deaktiviere gerne die Möglichkeit, dass User auch Gäste freigeben dürfen. Dies möchte ich immer selber in der Hand haben also muss folgende Einstellung angepasst werden.
# Allow users who've been granted usershare privileges to create # public shares, not just authenticated ones usershare allow guests = no
Alles was darunter kommt also die „Share Definitions“ markiere ich aus mit einem Semikolon am Anfang der Zeile. Ich lege lieber am Ende der Datei meine eigenen Shares an. Hier ist ein Beispiel für ein funktionierendes Share wo einer bestimmten User Gruppe Zugriff gewährt wird.
# Data Share für alle user der Gruppe users [Daten] comment = Speicher path = /home/data force group = users directory mask = 0770 create mask = 660 read only = no valid users = @users
Was wird hier definiert? In den eckigen Klammern, wird der angezeigte Name des Shares hinterlegt. Also falls dieser Share als Netzlaufwerk verbunden wird, dann bekommt dieses Netzlaufwerk diesen Namen. Als nächstes kommt ein Kommentar. Dies kann auch weggelassen werden. Im Linux Umfeld kann man sich dies mit anzeigen lassen! Der Speicherort des Ordners wird mit „path“ angegeben. Mit der Option „force group“ teilen wir Samba mit, dass bei allen neu angelegten Ordnern oder Dateien, die Gruppe auf „users“ gestellt werden soll. Die beiden folgenden Optionen setzen die Rechte für neu angelegte Ordner oder Dateien so, dass nur der User oder Mitglieder der Gruppe darin lesen oder schreiben dürfen. Es soll nicht nur lesend sein und nur Mitglieder der Gruppe „Users“ darf diese überhaupt sehen/lesen.
Nun sind wir durch mit der Server Konfiguration und kümmern uns um den benötigten Ordner für die Freigabe. In unserem Beispiel befindet sich die Freigabe im Home Ordner. Diesen Ordner müssen wir natürlich noch anlegen. Danach geben wir im Initial noch die richtigen Rechte.
mkdir /home/data chown user:users /home/data chmod 0770 /home/data
Sollten wir aus irgendeinem Grund einen schon bestehenden Ordner verwenden wollen, dann müssen wir die Besitz- und Rechteänderung auch auf alle darunter liegenden Ordner und Dateien anwenden. Hierzu sollten aber Dateien und Ordner verschiedene Rechte bekommen. Dafür bietet sich der Befehl „find“ an. Ein Beispiel für unseren Ordner.
chown -R user:users /home/data find /home/data -type f -exec chmod 660 {} \; find /home/data -type d -exec chmod 0770 {} \;
Jetzt geben wir den benötigten Port in der Firewall frei. Ich gehe wieder davon aus, dass das Paket „ufw“ installiert und aktiviert ist. Da dies ja so ist, reicht wieder ein kleiner Einzeiler aus!
ufw allow from 192.168.2.0/24 to any port 445
Als nächstes legen wir den Benutzer an. Es ist wichtig, dass wir als erstes den Linux Benutzer anlegen, da es sonst zu Problemen mit dem Samba User kommen kann. Daher legen wir mit folgendem Befehl den User an. Der Vollständigkeit halber habe ich auch die Gruppe „users“ mit angelegt. Dies gibt es zwar auf einigen Systemen schon aber damit einfach klar ist was zu tun wäre, wenn es diese Gruppe nicht gibt sondern diese neu angelegt werden muss.
adduser user adduser --group users adduser user users
Die ersten beiden Befehle sind klar. Im dritten fügen wir den User „user“ der Gruppe „users“ hinzu. Je nach Rechtekonzept könnte es gewünscht sein, nur einen Samba User anzulegen der sonst weder ein Homeverzeichnis noch die Möglichkeit hat sich einzuloggen. Hierfür kann folgender Befehl verwendet werden.
adduser --no-create-home --disabled-login user
Natürlich müssen wir auch noch einen Samba User anlegen. Diesen nennen wir genauso wie den Linux User aber können ihm dann ein anderes Passwort geben wenn dies gewünscht ist. Hierzu folgenden Befehl absetzen.
smbpasswd -a user
Nach absetzen des Befehls werden wir aufgefordert, ein Passwort einzugeben und dieses zu wiederholen. Dieses Passwort wird auch gebraucht, um sich auf ein Samba Share zu verbinden.
All unsere Einstellungsänderungen vom Anfang sind aktuell noch gar nicht aktiv. Daher muss als letzter Schritt noch der Samba Server neugestartet werden. Dazu einfach diesen Befehl eingeben.
service smbd restart