Dateifreigaben mit Samba

Samba ermöglicht es Verzeichnisse auf einem Linux-Rechner freizugeben, sodass auf diese von anderen Computern im lokalen Netzwerk aus zugegriffen werden kann.

Durch den Samba-Server und entsprechende Freigaben wird beispielsweise ein Raspberry Pi zu einem NAS (Network Attached Storage, engl. netzgebundener Speicher).

Inhalt

Installation

Installiert wird Samba ganz einfach über die Paketverwaltung:

Installation von Samba
1
2
sudo apt update
sudo apt install samba samba-common-bin

Das wars auch schon. 🙂

Konfiguration

Die Konfiguration von Samba erfolgt in der Datei /etc/samba/smb.conf.

Zusätzlich zu den Einstellungen müssen noch die entsprechenden Samba-Benutzer angelegt werden. Dazu aber im nächsten Abschnitt mehr.
Den gesamten oberen Teil der Konfiguration können wir so lassen.

Den unteren Teil passen wir an, indem wir den [homes]-Bereich auskommentieren und unsere eigenen Freigaben ganz unten hinzufügen. Wenn wir CUPS für die Druckverwaltung verwenden, dann passen wir den Eintrag path im Bereich [print$] dementsprechend an.

Der untere Teil der smb.conf könnte dann Beispielsweise so aussehen:

Samba Konfigurationsbeispiel /etc/samba/smb.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#======================= Share Definitions =======================

;[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 = yes

# 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 = 0700

# 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 = 0700

# 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

# Un-comment the following and create the netlogon directory for Domain Logons
# (you need to configure Samba to act as a domain controller too.)
;[netlogon]
; comment = Network Logon Service
; path = /home/samba/netlogon
; guest ok = yes
; read only = yes

# Un-comment the following and create the profiles directory to store
# users profiles (see the "logon path" option above)
# (you need to configure Samba to act as a domain controller too.)
# The path below should be writable by all users so that their
# profile directory may be created the first time they log on
;[profiles]
; comment = Users profiles
; path = /home/samba/profiles
; guest ok = no
; browseable = no
; create mask = 0600
; directory mask = 0700

[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = yes
read only = yes
create mask = 0700

# Windows clients look for this share name as a source of downloadable
# printer drivers
[print$]
comment = Printer Drivers
; path = /var/lib/samba/printers
path = /usr/share/cups/drivers
browseable = yes
read only = yes
guest ok = no
# Uncomment to allow remote administration of Windows print drivers.
# You may need to replace 'lpadmin' with the name of the group your
# admin users are members of.
# Please note that you also need to set appropriate Unix permissions
# to the drivers directory for these users to have write rights in it
; write list = root, @lpadmin

[Austausch]
comment = Datenaustausch
path = /var/daten/austausch/
writable = yes
force user = pi
guest ok = yes
valid users = peter,kristin,siegbert

[Fotos]
comment = Fotos
path = /var/daten/fotos/
writable = yes
force user = pi
valid users = peter,kristin

Dabei erstellen wir eine Freigabe namens Austausch für das Verzeichnis /var/daten/austausch/. Auf diese Freigabe dürfen die Benutzer peter, kristin und siegbert zugreifen und Gäste sind auch erlaubt. Die Anweisung force user = pi sorgt dafür, dass im Dateisystem die Dateien und Ordner unabhängig vom Samba-Benutzer dem System-Benutzer pi gehören.

Außerdem erstellen wir eine Freigabe mit dem Namen Fotos für /var/daten/fotos/, auf die nur die Samba-Benutzer peter und kristin Zugriff haben.

Nachdem wir die Konfiguration angepasst haben müssen wir den Samba-Server neu starten, damit die Änderungen übernommen werden.

Samba-Server neu starten
1
sudo systemctl restart smbd

Samba-Benutzer

Damit die Freigabe funktioniert, müssen wir noch die entsprechenden Samba-Benutzer anlegen.

Für jeden Samba-Benutzer muss auch auf dem System ein Benutzer vorhanden sein. Diesen System-Benutzer können wir wie folgt anlegen, wobei wir ihm keine weitere Rechte einräumen, da er ja nur für Samba benötigt wird. Die Nachfragen nach Vollständer Name etc. können dabei einfach durch drücken der Enter-Taste übersprungen werden.

Systembenutzer anlegen
1
sudo adduser --no-create-home --disabled-login --shell /bin/false <benutzername>

Ist der System-Benutzer vorhanden beziehungsweise neu angelegt, können wir mittels smbpasswd zu einem Samba-Benutzer machen und dabei sein Samba-Passwort festlegen.

Samba-Benutzer zu einem System-Benutzer anlegen und Passwort setzen
1
sudo smbpasswd -a <benutzername>

Möchten wir nur das Passwort für einen bestehenden Samba-Benutzer ändern lassen wir einfach das -a weg.