NEU - Mamas Garten - Passwörter: Privat: <Name meiner Mama>, Urlaubsbilder: <Name meiner Katze>

Manchmal möchte man mit einem Windows PC Datei basiert auf sein Linux Systems zugreifen. Dazu bietet sich das SAMBA-Paket an. Mit SAMBA ist man also in der Lage Dateien mit dem Linux System auszutauschen. Man baut sich damit einen NAS. SAMBA ist zwar noch viel mehr wie z.B. stellt das Paket sogar einen Active Domain-Controller zur Verfügung aber das sind alles Dinge die ich in meinem kleinen Heimnetz nicht benötige.

Die Installation unter Debian 10 erfolgt mit

root@Fliegerhost:/etc# apt install samba

Nach der Installation laufen zwei neue Daemons – der Dateidienst smbd und der Namensdienst nmbd – im System. Ansonsten existiert noch ein Verzeichnis /etc/samba. In diesem Verzeichnis befindet sich die Konfigurationsdatei smb.cnf. Die Datei smb.conf besteht aus mehreren Hauptsektionen. Dabei muß mindestens eine Sektion mit dem Bezeichner [global] vorkommen. Die Konfigurationsdatei beginnt immer mit einem [global] Abschnitt. In diesem Abschnitt stehen Konfigurationsdirektiven, die für alle Freigaben gelten, bzw. die global für den Server sind. Diese habe ich wie folgt konfiguriert:

## Browsing/Identification ###
# Change this to the workgroup/NT-domain name your Samba server will part of
   workgroup = FLIEGERNETZ

Dies legt die Arbeitsgruppe des Windows Netzwerkes fest. Diese lautet “Fliegernetz”.

#### Networking ####
# 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 = 127.0.0.1 enp2s0
   bind interfaces only = yes

Mit diesen beiden Einstellungen wird festgelegt auf welchem Netzwerk bzw. auf welchen Netzwerkinterface SAMBA lauscht. Hier ist es natürlich der Rechner selbst (localhost, 127.0.0.1) und das interne Netzwerkinterface. Mit diesen Einstellungen verhindert man letztlich externe Zugriffe.

# This tells Samba to use a separate log file for each machine
# that connects
   log file = /var/log/samba/log.%m
   log level = 2

# Cap the size of the individual log files (in KiB).
   max log size = 1000

# We want Samba to only log to /var/log/samba/log.{smbd,nmbd}.
# Append syslog@1 if you want important messages to be sent to syslog too.
   logging = file

Mit diesen Einstellungen wird das Logging-Verhalten festgelegt. Die Log-Dateien für jede einzelne Maschine die Zugriff über SAMBA bekam wird im Verzeichnis /var/log/samba/log.%m gespeichert. Ab einer Größe von 1MB werden die ersten Zeilen abgeschnitten.

# Do something sensible when Samba crashes: mail the admin a backtrace
   panic action = /usr/share/samba/panic-action %d

Diese Einstellung bewirkt dass der Nutzer “Admin” eine EMail im Fall eines Crashs gekommt.

####### Printer Support ########
   load printers = no
   printcap name = /dev/null

Mit diesen Einstellungen wird die Druckerunterstützung vollständig abgeschaltet da ich das nicht benötige. (Hinweis: Das Drucken von einem Windows PC funtioniert natürlich weiterhin)

####### Local Master Browser #######
   local master = yes
   preferred master = yes
   os level = 50

Mit dieser Einstellung bewirbt sich der SAMBA Server zur Wahl der Local-Master-Browser in dem Netzwerk zu werden. Da es vorkommen kann dass mehrere SAMBA Server in dem Netzwerk sind, findet eine Wahl statt da nur einer der Local-Master-Browser sein kann. Dabei bewirkt die Einstellung preferred master = yes einen leichten Vorteil für den Server bzw. die Einstellung os level = 50 garantiert das durch den hohen Wert.

####### Domain Master Browser #######
	domain master = no
	wins support = no

Mit diesen Einstellungen wird die Möglichkeit des SAMBA Servers ein Domain Master zu werden und auch die WINS Unterstützung vollständig abgeschaltet. Als File Server ist kein Domain-Master notwendig.

####### Authentication #######
# Server role. Defines in which mode Samba will operate. Possible
# values are "standalone server", "member server", "classic primary
# domain controller", "classic backup domain controller", "active
# directory domain controller". 
#
# Most people will want "standalone server" or "member server".
# Running as "active directory domain controller" will require first
# running "samba-tool domain provision" to wipe databases and create a
# new domain.
   server role = standalone server

Mit dieser Einstellung wird die Server Rolle als “Standalone” Server festgelegt.

# Dieser Parameter steuert, ob Samba die PAM-Direktiven
# zur Konto- und Sitzungsverwaltung befolgen soll oder nicht.
   obey pam restrictions = yes

# This boolean parameter controls whether Samba attempts to sync the Unix
# password with the SMB password when the encrypted SMB password in the
# passdb is changed.
   unix password sync = yes

# For Unix password sync to work on a Debian GNU/Linux system, the following
# parameters must be set (thanks to Ian Kahan <<kahan@informatik.tu-muenchen.de> for
# sending the correct chat script for the passwd program in Debian Sarge).
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

# This boolean controls whether PAM will be used for password changes
# when requested by an SMB client instead of the program listed in
# 'passwd program'. The default is 'no'.
   pam password change = yes

Diese Einstellungen steuern das Setzen und Synchronisieren des Passwortes welches zum Einloggen benötigt wird.
Hier wird erreicht das ein Passwortwechsel, den ein Nutzer durchführt, auch auf das Passwort des SAMBA Servers gespiegelt wird.

# "security = user" is always a good idea. This will require a Unix account
# in this server for every user accessing the server.
   security = user

# 'Never' - Bedeutet, dass Benutzeranmeldungsanfragen mit einem ungültigen
# Kennwort zurückgewiesen werden. Dies ist die Voreinstellung.
	map to guest = Never

Diese Einstellungen bewirken dass nur Nutzer zugelassen sind die einen realen Unix Account auf dem System haben und dass falsche Passworteingaben nicht auf den Gastzugang gemappt werden.

Ab hier sind alle notwendigen globalen Einstellungen, die für den Betrieb eines einfachen SAMBA File Servers notwendig sind, getan. Ab hier folgen dann die Einstellungen zu den Shares, den freigegebenen Verzeichnissen. Auf meinem Server werde ich nur das HOME-Verzeichnis des entsprechenden Nutzer freigeben der sich gerade einloggt. Es erfolgen keine [public] oder [guest] Freigaben.

[homes]
   comment = Home Directories
   browseable = no

# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
   read only = no

# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
   create mask = 0755

# Directory creation mask is set to 0700 for security reasons. If you want to
# create dirs. with group=rw permissions, set next parameter to 0775.
   directory mask = 0755

# By default, \\server\username shares can be connected to by anyone
# with access to the samba server.
# The following parameter makes sure that only "username" can connect
# to \\server\username
# This might need tweaking when using external authentication schemes
   valid users = %S

# Gäste dürfen nicht auf die Freigabe zugreifen
   guest ok = no

# Keine executable flags bei neu erstellen einer Datei
# Weder Eigentümer (archive), Gruppe (system) , noch Andere (hidden)
   map archive = no
   map system = no
   map hidden = no

Der Freigabename [homes] wird unter SAMBA speziell behandet. Beginnt eine Freigabesektion mit dem Namen [homes], gilt diese automatisch als Freigabe des Heimatverzeichnisses eines Benutzers. Diese Freigabe ist daher auch die einzigste Freigabe bei der die Option path weggelassen werden muß.
Hier wird also das jeweilige HOME-Verzeichnis des entsprechenden Nutzers zum Lesen und Schreiben freigegeben. Werden neue Dateien bzw. Verzeichnisse erstellt so werden die Permissions auf 0755 gesetzt und keine executable Flags gesetzt. Gäste sind für diese Freigabe nicht zugelassen.

Wenn man damit fertig ist dann nicht vergessen die beiden Daemons neu zu starten:

root@Fliegerhost:/etc# service nmbd restart
root@Fliegerhost:/etc# service smbd restart

SAMBA-Nutzer

Wer nun meint es ist alles erledigt, den muß ich enttäuschen denn zum Schluß müssen nun noch die Nutzer in die SAMBA Datenbank eingetragen werden die sich in SAMBA einloggen dürfen. Die Eintragung erfolgt ganz simpel mit dem Befehl

root@Fliegerhost:/etc# smbpasswd -a username

Dabei wird man aufgefordert ein Passwort einzugeben. Das ist das Passwort, hinter dem die Freigaben gesperrt werden.

Aktivieren von ‘Web Service Discovery’

Wenn man ab diesem Zeitpunkt seinen Windows-10 Rechner anmacht wird man feststellen dass der SAMBA-Server leider nicht sichtbar ist obwohl der Filetransfer funktioniert wenn man den Server im Windows-Explorer per ‘\\SERVERNAME\’ explizit aufruft.
Man hat auch nichts falsch gemacht, denn das Verhalten ist von Windows so gewollt denn ab Windows 10 version 1511 ist die Unterstützung für SMBv1 und dadurch ‘NetBIOS device discovery’ vollständig entfernt worden. Windows unterstützt aber mit SMBv2/3 ‘Web Service Discovery’ aber SAMBA leider nicht. Deshalb muß man noch ein kleines Programm installieren: https://github.com/christgau/wsdd

Leider muß man dazu seine Repositories erweitern und damit hat man dann auch eine (weitere) Fremdquelle im System da dieses kleine aber sehr sinnvolle Programm, nicht in den offiziellen Repositories von Debian enthalten ist. Folgende Zeile muß der Datei /etc/apt/sources.list hinzugefügt werden:

deb https://pkg.ltec.ch/public/ bullseye mainroot

Hier wird das neue Repository für die Suche von 'apt' aufgenommen. Hier für Debian 'Bullseye' aber es kann natürlich auch jede andere Version eingetragen werden.

Dann folgende Befehle eingeben:

root@Fliegerhost:~# apt-key adv --fetch-keys https://pkg.ltec.ch/public/conf/ltec-ag.gpg.key

Installiert die öffentlichen Schlüssel für das neue Repository.

root@Fliegerhost:~# apt update

Aktualisiert die Paketlisten für ‘apt’

root@Fliegerhost:~# apt install wsdd

Installiert den daemon 'wsdd' und trägt diesen in 'systemctrl' als Autostart bei jedem Systemstart ein.

Nun ist der 'wsdd' Daemon installiert und wird auch bei jedem Systemstart wieder gestartet. Jetzt muß der ‘wsdd’ noch konfiguriert werden.
Es wurde im Verzeichnis '/etc' eine Datei mit dem Namen 'wsdd.conf' erstellt, die man noch folgendermaßen bearbeiten muß: (‘enp2s0’ ist das Netzwerkinterface auf dem der 'wsdd' arbeitet, ‘-4’ besagt dass der 'wsdd' nur IPv4 unterstützt)

# command line parameters for wsdd (consult man page)
WSDD_PARAMS="-i enp2s0 -4"
SAMBA
Nach oben scrollen