Wenn ihr ein QNAP NAS habt und vom Mac aus darauf via SMB zugreift, dann habt ihr vielleicht schon mal bemerkt, dass alle Dateien und Ordner, die ihr vom NAS auf den Mac zurück kopiert, nur noch Schreib- und Leserechte für den Benutzer haben, mit dem ihr am Mac angemeldet seid und für sonst niemanden. Das alleine ist schon nicht so toll, ärgerlich wird es aber, wenn ihr die Dateien mal in Terminal.app anseht und erkennt, dass alle Dateien als ausführbar gekennzeichnet sind, also mit -rwx------
.
Eine Möglichkeit, das direkt in der NAS-Oberfläche des QNAP zu verändern gibt es nicht. Der SMB-Server den QNAP verwendet, lässt sich nicht entsprechend konfigurieren. Auch nicht auf der Konsole via ssh-Login. Doch es gibt eine andere Lösung: einen „eigenen“ SMB-Server auf dem NAS installieren.
Der Artikel heute geht einwenig tiefer als sonst und ihr solltet schon etwas Erfahrung mit der Konsole und einem Samba-Server haben. Ich versuche zwar möglichst einfach zu schreiben, aber dennoch ist Wissen zu Samba und Co hilfreich.
1. SMB-Server im NAS deaktivieren
Klar, wenn ihr einen eigenen SMB-Server verwenden wollt, müsst ihr den im NAS integrierten erst deaktivieren. Bevor ihr das macht, bietet es sich aber an, die Goodies, die ich erstellt habe, herunter zu laden und auf das NAS in euren Homeordner zu legen und dort zu entpacken.
Das Abschalten des SMB geht in der Oberfläche, in der Systemsteuerung.
2. Entware installieren
Entware ist ein Paketmanager, mit dem ihr über 2500 Pakete mit Tools, Utilities und Anwendungen aus dem Linux-Umfeld sehr einfach installieren und verwalten könnt. Ladet euch das QPKG von hier herunter und zwar das für die Standard Installation. Anschließend installiert ihr es über das App Center im QNAP, indem ihr auf das Symbol oben rechts „manuell installieren“ klickt und das soeben heruntergeladene Entware-Paket auswählt.
Weiterhin benötigt ihr einen ssh-Zugang zu eurem QNAP. Also ab in die Systemeinstellungen -> Netzwerk- und Dateidienste -> Telnet / SSH und dort „SSH-Verbindung zulassen“ aktivieren und bei den Zugangsrechten euren Admin-User (oder den, den ihr als Admin verwendet) auswählen.
Um uns das Leben auf der Konsole im QNAP einfacher zu machen, installieren wir uns mit Entware erst mal zwei Tools und zwar less
(zum Anzeigen von Textdateien) und nano
(als Editor). Dazu loggt ihr euch via ssh auf dem QNAP ein und gebt folgendes ein:
sudo opkg install less nano
3. Samba-Server installieren
Nun installiert ihr den Samba-Server aus Entware, der zudem auch eine neuere Version mitbringt, als der QNAP-eigene.
sudo opkg install samba4-libs samba4-server samba4-utils
Entware verwendet zum starten von Diensten das Verzeichnis /opt/etc/init.d
und die darin enthaltenen Startskripte, die alle mit „S“ als Namen beginnen müssen. Die Skripte werden in SystemV-Init-Manier gestartet, gestoppt, usw, also z.B. mit einem Aufruf von „S91smb start“ oder „S91smb stop“. Entware sorgt dafür, dass bei einem Neustart des NAS die Skripte entsprechend ausgeführt werden, so dass unser eigener Samba-Server auch nach einem Neustart wieder läuft.
Die Konfigurationsdatei des Samba-Servers findet ihr im Verzeichnis /opt/etc/samba/smb.conf
. Um diese zu editieren und anzupassen verwendet ihr nano mit Admin-Rechten, also
sudo nano /opt/etc/samba/smb.conf
Wenn ihr euch mit Samba auskennt, könnt euch nun schon an der Konfiguration von Samba austoben. Ich habe aber noch ein paar Goodies für euch.
4. Samba konfigurieren und in QTS einpassen
Damit ihr nicht alles selbst konfigurieren müsst und der Samba-Server auch mit den weiteren Funktionen des QNAP, wie dem Anlegen von Freigabeordnern und der User- und Gruppenrechtverwaltung harmoniert, habe ich ein paar Goodies, die folgendes ermöglichen:
- vorkonfigurierte smb.conf, die unser ursprüngliches Problem der
-rwx------
Rechte löst - ein Startskript, dass sich ins QNAP integriert und auch Neustarts „überlebt“
- ein Skript zur einfachen Verwaltung des Samba-Servers und zur automatischen Integration der Freigabeordner aus dem QNAP
- automatisches Bekanntgeben von TimeMachine-Volumes via Bonjour, so dass TimeMachine auf dem Mac problemlos aktiviert werden kann und die Volumes sofort sichtbar sind. Die Standardeinstellung des QNAP lässt diese nämlich leider nicht zu.
Die Goodies habt ihr hoffentlich schon im 1. Schritt herunter geladen und in euer Homeverzeichnis gelegt und entpackt. Falls nicht, müsst ihr den QNAP-Samba Server nochmals temporär aktivieren. Keine Sorge, noch kommt der eigene Samba-Server euch nicht in die Quere.
So, nun geht’s ans konfigurieren. Ihr wechselt also in eurer Homeverzeichnis, falls ihr nicht schon dort seid.
Goodie: die smb.conf
Die von mir erstellte smb.conf kopiert ihr nach /opt/etc/samba
mit
sudo cp smb.conf /opt/etc/samba
Ihr könnt die natürlich auch nach euren Wünschen anpassen mit
sudo nano /opt/etc/samba/smb.conf
Dabei müsst ihr keinerlei Shares anlegen, da die allesamt mit dem mitgelieferten Verwaltungsskript aus den QNAP Einstellungen der Freigabeordner übernommen werden. Ihr müsst euch also nur mit der [global]
section befassen.
Goodie: das Startskript S91smb
Das Startskript S91smb kopiert ihr einfach nach /opt/etc/init.d
mit
sudo cp S91smb /opt/etc/init.d
Das starten, stoppen, reloaden usw. erfolgt nur über das Verwaltungsskript
Goodie: das Verwaltungsskript samba4qnap
Mit diesem Skript könnt ihr den soeben installierten Samba-Server verwalten. Wenn ihr das Skript alleine aufruft, also:
./samba4qnap
ohne eine Option anzugeben, wird ein kurzer Hilfetext angezeigt. Ein üblicher Aufruf ist also in der Art
sudo ./samba4qnap OPTION
wobei OPTION eines der folgenden Worte ist:
start | startet den Samba Server |
stop | stoppt den Samba Server |
restart | führt einen Neustart (stop -> start) des Server durch |
reload | lädt die Konfigurationsdatei smb.conf neu |
update | liest die Einstellungen der Freigabeordner ein, schreibt die smb.conf, |
lädt die Konfiguration neu und aktualisiert die TimeMachine-Bekanntgabe | |
tmupdate | erneuert die TimeMachine-Bekanntgabe |
show | liest die Einstellungen der Freigabeordner ein und zeigt sie nur an. |
status | zeigt den Status des Samba Servers (running / stopped) |
Da ihr ja bereits Freigabeordner eingerichtet habt für den QNAP-eigenen SMB-Dienst, reicht es nun aus, wenn ihr den Server startet (start) und die vorhandenen Einstellungen einlest (update), also die beiden Befehle
sudo ./samba4qnap start
sudo ./samba4qnap update
ausführt. Der mit Entware installierte Samba-Server läuft nun und versorgt euch mit den vorhandenen SMB-Freigabeordnern.
Wenn ihr an eurer Konfiguration etwas ändern wollt, dann könnt ihr dies in der [global] Section jederzeit tun. Alle Änderungen, die ihr dort macht werden unverändert bei einem Update übernommen. Änderungen oder Ergänzungen bei den einzelnen Shares werden ebenso übernommen, allerdings solltet ihr die folgenden Einstellungen nicht verändern, da diese aus der QNAP-Oberfläche übernommen werden. Ihr könnt diese also dort verändern. Das betrifft die folgenden Einstellungen: comment, path, browseable, read list, write list, valid users, strict allocate und fruit:time machine. Zudem wird euer Homeverzeichnis nicht mehr mit dem neutralen „home“ angezeigt, sondern mit eurem Account-Namen.
Nach Änderungen reicht es aus, mit sudo ./samba4qnap update
die Konfiguration zu aktualisieren und neu einzulesen.
5. Fazit
Die unglückliche QNAP-Konfiguration, die alle Dateien und Ordner immer mit den Rechten -rwx------
versieht ist nun behoben, TimeMachine-Volumes werden endlich korrekt im LAN bekannt gegeben und angezeigt und ihr habt weiterhin die volle Kontrolle über die Konfiguration über den selbst installierten Samba-Server und könnt auch weiterhin die Funktionen der QNAP-Oberfläche für die Freigaben und Rechteverwaltung nutzen.
Also dann, viel Spaß mit eurem neuen Samba Server.
Update
27. Jan. 2022: Ich habe die Tools ein kleinwenig ergänzt. Nun ist auch die TimeMachine-Bekanntgabe über Bonjour enthalten und diese bleibt auch nach einem Neustart des NAS erhalten und wird nicht mehr gelöscht. Ladet euch die Goodies einfach erneut herunter und kopiert die Datei S91smb wie oben beschrieben und ersetzt die Datei samba4qnap einfach mit dieser neuen Version.
1 Kommentar
Peter · 17. Oktober 2022 um 12:59
Wirklich toll, welche Arbeit du in diesen Workaround gesteckt hast und Danke fürs Veröffentlichen. Schade, dass es bislang so wenig Feedback gegeben hat. Aber vielleicht gibt es stille Leser, die ihn nutzen.
Ich hatte zunächst ein paar Probleme:
1.) Entware sollte man als User Admin benutzen, der gemäß aktueller Empfehlung von QNAP aus Sicherheitsgründen allerdings deaktiviert sein sollte. Bei anderen Usern fehlt der Pfad zu Entware und opkg lässt sich nur mit kompletter Pfadangabe starten.
2.) Kein wirkliches Problem, aber less war bei mir schon installiert (QuTS Hero 5.0.1).
3.) samba4qnap show und samba4qnap update hingen bei mir in einer Endlosschleife. Grund war, in der Funktion gen_smbconf prüfst du auf das Zeichen “[“, um das Ende des [global] Blocks in der smb.conf zu finden. In deiner smb.conf gibt es aber nur einen [global] Block und somit auch kein [ Zeichen, was zu der Endlosschleife führt. Einfach ein [ ans Ende der smb.conf behebt das Problem.
4.) Ich konnte mich zunächst mit keinem User per SMB anmelden. Grund war, du benutzt /opt/etc/samba/smbusers für die erlaubten User. Diese Datei existierte bei mir gar nicht. Ditto. die Passwortdatei /opt/etc/samba/smbpasswd. Warum nutzt du nicht die vorhandenen Dateien in /etc/config? So muss man die Benutzerverwaltung für SMB nochmals separat im Terminal machen und kann nicht das QNAP Webinterface benutzen.
5.) Der [global] Block in deiner mitgelieferten smb.conf hat nur 32 Zeilen. Der originale [global] Block von QNAP hat 85 Zeilen. Das beunruhigt mich etwas. Ich denke der [global] Block von QNAP wird dynamisch zusammengebaut in Abhängigkeit von dem, was sonst noch im System aktiviert ist. Vielleicht habe ich einfach mehr Zeugs aktiviert als du. Meine Befürchtung ist, dass manche Funktionen über SMB nicht mehr funktionieren mit deinem kurzen [global] Block.
Wäre es nicht besser gewesen, beim Zusammenbau des smb.conf den originalen [global] Block komplett zu übernehmen und nur die Parameter die fehlen zu ergänzen bzw. die mit geändertem Wert zu ersetzen? Oder geht das nicht auf Grund der unterschiedlichen SMB Versionen?
6.) Bei den Shares machst du es ja schon so, dass du die originalen Parameter übernimmst. Allerdings nur die Folgenden:
comment
path
browsable
read list
write list
valid users
strict allocate
In meiner originalen smb.conf gibt es aber viel mehr Parameter in den Shares. D.h. es gilt das Gleiche wie im [global] Block. Evt. funktioniert das eine oder andere Feature jetzt nicht mehr über SMB.
Vielleicht sind die Unterschiede aber auch nur deshalb vorhanden, weil wir unterschiedliche Versionen von QTS/QuTS Hero im Einsatz haben.
Welche Vorgehensweise würdest du mir raten, die Parameter in meinem smb.conf speziell an mein System anzupassen?
Wie bist du vorgegangen bei der Auswahl deiner Parameter?