NAS mit ODROID-HC4 - Teil 4: Samba
Mit dieser Artikelserie soll das Einrichten eines kleinen, günstigen NAS erläutert werden. Linux basierte Clients im Haushalt sollen darauf ihre Backups ablegen. Damit eine defekte NAS-Festplatte keinen Daten-GAU verursacht, werden die Daten per RAID1 gespiegelt. Der generische Ansatz (kein Fertigsystem) soll uns dabei helfen, auch andere Wünsche an das NAS zu erfüllen, wie z. B. ein Calibre Server.
Es sind folgende Teile geplant:
- Hardware und Betriebssystem
- Backups mit Borg
- Calibre Server
- Samba Server
Subvolume @samba
Wie schon für den Borg Backup- und den Calibre-Teil, erstellen wir auch hier ein Subvolume, dediziert für unseren Samba Dienst:
# mkdir /mnt/temp
# mount /dev/sda /mnt/temp
# btrfs subvolume create /mnt/@samba
# umount /mnt/temp
Damit das Subvolume automatisch eingehängt wird, erstellen wir noch das Verzeichnis /srv/samba und fügen folgenden Eintrag in /etc/fstab
hinzu:
[…]
/dev/sda1 /srv/samba btrfs defaults,nofail,noatime,compress=zstd,subvol=@samba 0 0
Die Optionen können natürlich nach Belieben modifiziert werden. Ich habe mich für eine Kompression mittels des zstd-Algorithmus entschieden. nofail
bewirkt, dass das System auch startet, wenn es beim Einhängen Probleme gibt.
Wenn man sich einen Reboot ersparen will, mountet man das Subvolume nun einfach einmalig mit mount /srv/samba
(als root).
Samba
Zuallererst wird das samba Paket mit apt install samba
(als root) installiert. Samba verlangt, dass zu einem Samba-Nutzer auch immer ein Linux-Nutzer vorhanden ist. Der Linux-Nutzer muss sich nicht am System anmelden können. Er muss lediglich existieren. Also erstellen wir zunächst zwei Linux- und danach die entsprechenden Samba-Nutzer:
# useradd -s /bin/false bob
# useradd -s /bin/false alice
# smbpasswd -a bob
New SMB password:
Retype new SMB password:
Added user bob.
# smbpasswd -a alice
New SMB password:
Retype new SMB password:
Added user alice.
Da unser NAS für die Familie gedacht ist, und man sich ggf. gegenseitig Dateien verfügbar machen möchte, richten wir noch eine Gruppe familie für die Linux-Nutzer ein:
# groupadd familie
# usermod -a -G familie bob
# usermod -a -G familie alice
Exemplarisch richten wir nun zwei Shares ein. Einen familie Share, der zum Austausch von Dateien dient. Alle Mitglieder der Familie haben Lese- und Schreibrechte für alle Dateien. Und wir richten noch einen media Share ein. Dieser gehört nur einem Nutzer und auch nur dieser hat Schreibrechte. Die Familie bekommt jedoch auf jeden Fall mal Leserechte und darf sich im gezeigten Beispiel auch tatsächlich anmelden. Ist das nicht gewünscht, kann das mittels valid users = bob
auch auf den eigentlichen Besitzer, bob, eingeschränkt werden. Zunächst also erstellen wir die entsprechenden Verzeichnisse und setzen komplette Lese- und Schreibrechte:
# mkdir /srv/samba/{familie,media}
# chmod 0777 /srv/samba/{familie,media}
Nun erstellen wir die Samba-Konfigurationsdatei und sichern vorher noch die Originaldatei:
# mv /etc/samba/smb.conf /etc/samba/smb.orig
Neuer Inhalt von /etc/samba/smb.conf:
[global]
workgroup = WORKGROUP
security = user
map to guest = bad password
[familie]
path = /srv/samba/familie
public = yes
writable = yes
comment = smb share
printable = no
guest ok = yes
force group = familie
valid users = @familie
create mask = 0660
directory mask = 0770
[media]
path = /srv/samba/media
writable = yes
printable = no
guest ok = no
valid users = @familie
write list = bob
create mask = 0640
directory mask = 0750
force group = familie
Nach einem Neustart der Samba-Dienste stehen unsere Shares zur Verfügung:
# sudo systemctl restart smbd.service
# sudo systemctl restart nmbd.service
Nun können die Shares aus dem Heimnetz eingehängt und verwendet werden.
Damit ist das vorläufige Ende der Artikelserie rund um das ODROID-HC4 basierte NAS erreicht. Meistens wird sich das NAS langweilen. Bei dem geringen Stromverbrauch, der sich durch Einsatz von SSDs natürlich noch einmal deutlich verringern ließe, ist das jedoch nicht weiter tragisch. Vielleicht wird es gelegentlich noch weitere Teile dieser Artikelserie geben, wo noch Details besprochen oder weitere Dienste eingerichtet werden.