Synology NAS als NFS-Mount: Spezielles Problem der Datei-Rechte lösen

In diesem Beitrag geht es darum, wie man ein Synology NAS als NFS-Mount in einem Linux-System einbindet. Dabei gehe ich auf das spezielle Problem der angezeigten Dateirechte ein. Genauer gesagt gibt es das Problem, dass die Dateirechte im Linux-System bei Verwendung eines User-Accounts nicht wie üblich angezeigt werden, insbesondere dann, wenn man neue Dateien erzeugt und die Einhaltung der „umask“-Vorgaben erwartet. Das ist auch dann ein Problem, wenn man UID und GUID zwischen beiden System anpasst. Also konkretes Beispiel: Man erzeugt im Linux-System ein neues File, und die angezeigten Rechte im (Debian-) Linux sind für alle 777 bzw. – rwx rwx rwx, sie entsprechen nicht den umask-Vorgaben. Das Problem wird z.B. hier geschildert: link . Dort wird u.a. vorgeschlagen, dass man einen speziellen „Hack“ verwenden kann, also ein magisches Kommando (synocheckshared), von dem man nicht weiß, was es genau macht. Eine wirkliche Lösung konnte ich leider nicht finden. Die meisten Anleitungen gehen davon aus, dass man als Root auf das NAS zugreift. Eine Anleitung, die schon eher in die gesuchte Richtung geht ist hier, aber leider löst sie auch nicht das 777-Problem.  Ich schlage hier etwas vor, was ich durch ausprobieren gefunden habe und was zumindest für meine Systeme funktioniert.

Die Ursache des Problems ist, dass Synology ein spezielles System von ACLs benutzt, um die Standard-Linux-Rechte zu erweitern. Dieses ACL-System ist nicht kompatibel mit dem Standard-Dateisystem von Linux. Ich benutze hier ein Debian 9. Der Aufbau ist wie folgt:

|Debian 9 – Linux-Server|  ———————————->|Synology RS816|

Der Linux-Server ist der NFS-Client, das Synology NAS ist der NFS-Server. Da die Synology-Systeme das gleiche Betriebssystem verwenden, sollte die Anleitung auch für andere Synology-NAS funktionieren. Der hier beschriebene Ansatz verzichtet darauf, Rechte für den Synology-User, der für den NAS-Zugriff verwendet wird, einzurichten. Dadurch wird das ACL-System von Synology nicht aktiv, und man hat ein „ganz normales“ Linux-Dateisystem. Erwartet wird folgendes:

  • Neu erzeugte Dateien haben die Rechte 755, also rwx r-x r-x.
  • Das gilt auch für neu erzeugte Ordner.
  • Das Mount-Verzeichnis gehört einem Benutzer und einer Benutzergruppe, so wie es normalerweise für ein Home-Verzeichnis eines Benutzers gegeben ist.
  • Zusammengefasst: Ein Linux-Benutzer, dessen Homeverzeichnis als NFS-Mount eingebunden ist, soll bitte gar nichts davon bemerken !!!

Folgende Einschränkungen gibt es dabei: Dateien werden nur vom Linux-Client aus erzeugt oder kopiert. Vom Synology-NAS aus ist kein Zugriff vorgesehen oder notwendig. Im Folgenden gebe ich eine schrittweise Anleitung, die sich auf einen Testbenutzer mit dem Namen „test“ und der Gruppe „test“ bezieht. Zum Schluss zeige ich noch kurz, wie man diese Anleitung verwenden kann, um einen Benutzer auf ein NFS-Share umzuziehen.

Schritt 1: Vorraussetzung auf der Synology NAS / dem NFS-Server

Auf der Synology NAS bin ich als „admin“ über den Web-Browser eingeloggt. Unter Systemsteuerung -> Dateidienste -> SMB/AFP/NFS:

Hier habe ich die beiden Haken bei „NFS aktivieren“ und „NFS v4.1 Unterstützung aktivieren“ gesetzt. Bei „Erweiterte Einstellungen“ ist bei mir „Standard Unix Berechtigungen anwenden“ aktiviert, sonst nichts.

Schritt 2: Gemeinsamen Ordner auf NAS erstellen

Hier erzeuge ich einen NFS-Ordner mit dem Namen „test“ auf dem NAS: Systemsteuerung -> gemeinsamer Ordner -> erstellen. Ausser dem Namen „test“ stelle ich nichts Besonderes ein und klicke immer auf Weiter. Den Papierkorb deaktiviere ich. Am Ende auf Übernehmen.

Bitte KEINE Zugriffsrechte für diesen Ordner aktivieren, sonst funktioniert die Anleitung nicht !!

Danach auf „NFS-Berechtigungen“ gehen und auf „Erstellen“ klicken. Hier stellt man die NFS-Freigabe ein. Bei Hostname gebe ich das Netz an, in dem sich der NFS-Client befindet. Ansonsten die Defaults belassen:

Die beiden wichtigen Einstellungen hier sind bei

  • „Squash: Keine Zuordnung“ und bei
  • „Sicherheit: sys“.

Die Einstellung bei Sqash bedeutet, dass man als Client unter seiner auf dem NFS-Client gegebenen UID und GUID auf dem Server agiert, und dementsprechend auch Rechte auf dem Server hat. Die zweite Einstellung bei Sicherheit bedeutet, dass man kein Kerberos verwendet. Hierzu ist zu sagen, dass hierbei keine Authentifizierung auf dem Server durch Passwort und Account-Name erfolgt, es gibt also keine echte Sicherheit. Jeder, der im Netzwerk ist, kann prinzipiell auf den Server zugreifen. Es sollte also ein speziell geschützes Netzwerk vorliegen. Wem das nicht reicht, der muss Kerberos verwenden, was hier nicht Thema ist.

Schritt 3: Benutzer und Gruppe auf NAS anlegen

Hier ist nun ein Benutzer und eine Gruppe jeweils mit dem Namen „test“ anzulegen:

  • Systemsteuerung- > Benutzer -> erstellen

Beim Benutzer gebe ich kein Passwort an und belasse ihn in der System Default Group „users“. Im Anschluss bitte wieder keinerlei Berechtigungen zuweisen! Am Ende klicke ich auf „übernehmen“. Gleichermaßen lege ich eine Gruppe mit dem Namen „test“ an:

  • Systemsteuerung -> Gruppe -> erstellen

Auch hier bitte keine Berechtigungen.

Schritt 4: UID und GID von User „test“ und Gruppe „test“ auf dem NAS heraus finden

Nun geht es darum, dass man die user ID (UID) und die group ID (GID) von dem Nutzer „test“ und der Gruppe „test“ auf dem NAS heraus findet. Diese werden wir später auf dem NFS-Client (dem Linux-Server) anpassen. Der Hintergrund ist, dass man auf dem NAS die UID oder die GUID nicht ändern kann, auch nicht in der Konsole. Deswegen müssen diese auf dem Client angepasst werden.

Als erstes loggt man sich per SSH auf dem NAS ein. Das kann man von irgend einem Rechner aus machen. Dazu muss man die IP-Adresse vom NAS wissen. Zunächst loggt man sich mit seinem Passwort als „admin“ ein, dann wechselt man mit „sudo -i“ zu Root (genauere Anleitung hier). Das Passwort ist das gleiche wie bei „admin“.

Jetzt öffnet man mit einem Editor vi die Datei /etc/passwd. Alternativ kann man diese Datei auch mit dem Kommando „cat /etc/passwd“ sich anzeigen lassen. Dann sucht man nach der Zeile für den user „test“:

test:x:1031:100::/var/services/homes/test:/sbin/nologin

Hier findet man die UID, also bei uns die Zahl 1031.

Nun muss man die GID von der gleichnamigen Gruppe „test“ heraus finden. Diese findet man, indem man die Datei /etc/group gleichermaßen nach der Zeile für die Gruppe „test“ durchsucht:

test:x:65539:

Hier ist die GID = 65539. GID und UID muss man sich nun für einen späteren Schritt merken.

Schritt 5: Nutzer, Gruppe und Rechte des Ordners „test“ auf dem NAS anpassen

Wir sind immer noch im Synology NAS als root eingeloggt. Jetzt wechseln wir zu dem Verzeichnis, in dem der erzeugten Ordner /volume1/test liegt, also „cd /volume1“. Diesen Ordner kann ich mir jetzt anzeigen lassen:

root@synology-rs816:/volume1# ls -ld test
d———+ 4 root root 4096 Nov 27 23:42 test

Der Ordner gehört dem Benutzer „root“ und der Gruppe „root“. Nun ändern wir Benutzer und Gruppe und lassen uns wieder den Ordner anzeigen:

root@synology-rs816:/volume1# chown test /volume1/test
root@synology-rs816:/volume1# chgrp test /volume1/test
root@synology-rs816:/volume1# ls -ld test
d———+ 4 test test 4096 Nov 27 23:42 test

rwx-Recht: Ich habe als root auf dem NAS auch noch die Rechte von dem Ordner angepasst, so dass nur der Besitzer das Recht rwx hat.

Nun sind wir auf dem NAS fertig.

Schritt 6: User „test“ auf dem Linux-Server erzeugen und UID und GID anpassen

Falls der User „test“ auf dem NFS client noch nicht existiert, erzeugen wir ihn mit dem Kommando „#adduser test“. Danach passen wir die UID vom User „test“ an:

#usermod -u 1031 test

Und auch die GUID der Gruppe „test“:

#groupmod -g 65539 test

UID und GID stammen von einem vorherigen Schritt. Prinzipiell kann man auch auf dem NFS-Client und NFS-Server unterschiedliche Namen verwenden, also z.B. „testuser-linux“ auf dem Debian-Server und „testuser-nas“ auf dem NAS. Auch unterschiedliche Gruppennamen oder Ordnernamen sind ok. Von Bedeutung ist nur, dass die UID und GID auf beiden Systemen überein stimmen. Benutzer-Passwörter spielen wie gesagt auch keine Rolle.

Achtung: Das Anpassen von UIDs von existierenden Benutzern kann zu Problemen führen. Beispielsweise funktionierte bei mir danach ein CRON-Job nicht mehr (und ich glaube auch ein SSH-key). CRON-Jobs werden Nutzern über Ihre UID zugeordnet und sind nach der Änderung der UID neu einzurichten.

Schritt 7: NFS share auf dem Client mounten

Wir sind immer noch auf dem Linux-Server. In die Datei /etc/fstab trage ich folgende Zeile ein:

  • 192.168.8.30:/volume1/test /home/test nfs auto,user,defaults,tcp,intr 0 0

Erklärungen zu den Optionen:

  • nfs: NFS-Dateisystem
  • auto: Beim Booten mounten
  • user: jeder Benutzer kann den Mount durchführen (nicht nur root)
  • defaults: Default-Werte verwenden, genauer gesagt: rw, suid, dev, exec, auto, nouser, async
  • tcp: Es soll TCP verwendet werden
  • intr: Ermöglicht ein umount bzw. Aushängen des NFS-Shares, auch wenn das Synology NAS ausgeschaltet wird oder ist.
  • vorletzte 0: teilt dem Backup-tool „dump“ mit, dass kein Backup durchgeführt werden soll.
  • letzte 0: es wird kein fsck check durchgeführt

Um den Mount zu aktivieren oder zu testen, kann man nun (als normaler Benutzer oder als root) den Befehl „mount /home/test“ eingeben oder einen Neustart durchführen. Ggf. kann man / sollte man auch noch die Rechte des eingehängten Verzeichnisses ändern. (Aushängen kann man mit dem Befehl „umount /home/test“.) Nun sollte alles wie angedacht funktionieren !!!

Umziehen eines Linux-Accounts/gegebenen Linux-Home-Verzeichnisses auf ein NFS-Share

Liegt auf dem Linux-System bereits ein Benutzer-Account vor, dessen Home-Verzeichnis man gerne auf das Synology als NFS-Share umziehen möchte, so kann man die Anleitung fast 1:1 verwenden. Folgende Vorgehensweise:

  • ein Verzeichnis /home/tmp erzeugen, dass dem Benutzer und seiner Gruppe gehört
  • ggf. Dienste anhalten, die in das Home-Verzeichnis des Benutzers schreiben
  • Alle Dateien des Benutzers in das Verzeichnis /home/tmp verschieben. Das bitte als Benutzer durchführen, damit die Rechte stimmen (z.B. #cp -ar /home/benutzername/*   /home/tmp, danach Dateien im Verzeichnis /home/benutzername löschen; Achtung: bei diesem Befehl werden keine versteckten Dateien kopiert!).
  • Nun die Schritte aus der Anleitung oben durchführen mit der Ausnahme, dass kein Benutzer erzeugt werden braucht.
  • Als Benutzer die Dateien aus /home/tmp in sein eigenes Home-Verzeichnis zurück kopieren (später kann man ja das tmp löschen, wenn alles funktioniert).
  • ggf. Dienste wieder einschalten
Dieser Beitrag wurde unter Allgemein veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Du kannst diese HTML Tags und Attribute benutzen:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>