How-to: Selektiver SFTP-Zugriff auf Synology NAS mittels Bind-Mounts

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

firefox1970

Benutzer
Registriert
22. Apr. 2022
Beiträge
18
Reaktionspunkte
4
Punkte
9

How-to: Selektiver SFTP-Zugriff auf deiner Synology NAS mit Bind-Mounts​

Dieses How-to zeigt dir Schritt für Schritt, wie du einen SFTP-Benutzer auf deiner Synology NAS einrichtest. Dieser Benutzer soll nur auf bestimmte Unterordner zugreifen können, die sich eigentlich an einem anderen Ort befinden. Ich nutze dafür "Bind-Mounts", weil der internal-sftp Dienst deiner Synology aus Sicherheitsgründen keine Symlinks folgt, die außerhalb des "Chroot"-Verzeichnisses des Benutzers liegen.

Ziel: Dein ftp_user soll sich per SFTP anmelden und nur die Ordner "Ordner1, Ordner2, Ordner3 und Ordner4" sehen und nutzen können, obwohl diese Ordner sich tatsächlich in /volume1/Daten/ befinden.

Was du dafür brauchst:

  • Zugriff auf dein Synology DiskStation Manager (DSM) als Administrator.
  • SSH-Zugriff auf deiner Synology NAS muss aktiviert sein (findest du unter Systemsteuerung > Terminal & SNMP).
  • Einen freigegebenen Ordner namens SFTP auf deiner Synology NAS (z.B. auf volume1, also /volume1/SFTP).
  • Die Ordner, die du verlinken möchtest, existieren bereits und heißen:
    /volume1/Daten/Ordner1
    /volume1/Daten/Ordner2
    /volume1/Daten/Ordner3
    /volume1/Daten/Ordner4.

Teil 1: Vorbereitung und Benutzerkonfiguration im DSM

  1. Melde dich im Synology DSM als Administrator an.
  2. Bestätige oder erstelle den freigegebenen Ordner SFTP:
    • Geh zu Systemsteuerung > Freigegebener Ordner.
    • Stelle sicher, dass der Ordner SFTP existiert. Er wird später die "Wurzel" für deinen SFTP-Benutzer sein.
    • Sein tatsächlicher Pfad auf dem Dateisystem ist dann z.B. /volume1/SFTP (wenn er auf Volume 1 liegt).
  3. Konfiguriere deinen SFTP-Benutzer (ftp_user):
    • Geh zu Systemsteuerung > Benutzer & Gruppe.
    • Wähle deinen Benutzer ftp_user aus und klicke auf Bearbeiten.
    • Tab "Berechtigungen":
      • Finde den freigegebenen Ordner SFTP.
      • Stelle sicher, dass für ftp_user die Berechtigung "Lesen & Schreiben" aktiviert ist.
      • Finde die ursprünglichen Ordner Ordner1, Ordner2, Ordner3, Ordner4 (oder den übergeordneten Ordner, der diese enthält, z.B. Daten).
      • Stelle sicher, dass für diese Ordner (oder den übergeordneten) ebenfalls die Berechtigung "Lesen & Schreiben" für ftp_user gesetzt ist. Das ist wichtig, weil der Bind-Mount auf diese Originalberechtigungen zugreift.
    • Tab "Anwendungen":
      • Stelle sicher, dass die Anwendung "FTP" (was SFTP mit einschließt) für ftp_user erlaubt ist.
    • Tab "Erweitert":
      • (Optional, aber für eine strikte Isolation empfohlen): Aktiviere "Benutzer-Home-Verzeichnis aktivieren" und wähle im Dropdown-Menü den freigegebenen Ordner SFTP als Home-Verzeichnis für diesen Benutzer. Das "chrooted" den Benutzer beim SFTP-Login direkt in diesen Ordner.
    • Klicke auf "Übernehmen" oder "OK", um deine Änderungen zu speichern.
  4. SSH-Zugriff für root vorbereiten:
    • Geh zu Systemsteuerung > Terminal & SNMP.
    • Stelle sicher, dass "SSH-Dienst aktivieren" mit einem Häkchen versehen ist. (Der Standard-Port ist 22).
  5. SFTP-Dienst aktivieren und Portnummer konfigurieren:
    • Geh zu Systemsteuerung > Dateidienste > FTP.
    • Wechsle zum Tab "SFTP".
    • Aktiviere das Häkchen bei "SFTP-Dienst aktivieren".
    • Notiere dir die Portnummer (standardmäßig 22). Diese Nummer benötigst du später in deinem SFTP-Client.
    • Klicke auf "Übernehmen" oder "OK", um die Einstellungen zu speichern.

Teil 2: Erstellung deines Skripts für Bind-Mounts

Dieses Skript wird die Ordner von /volume1/Daten/ in den /volume1/SFTP/ Ordner mounten.

  1. Verbinde dich per SSH mit deiner Synology NAS:
    • Öffne ein Terminal (macOS/Linux) oder PuTTY/PowerShell (Windows).
    • Gib ein: ssh admin@<IP_deiner_NAS> (Ersetze <IP_deiner_NAS> durch die IP-Adresse deiner Synology).
    • Gib dein Administrator-Passwort ein.
    • Wechsle zum Root-Benutzer: sudo -i (Gib erneut dein Administrator-Passwort ein).
  2. Erstelle die Skriptdatei:
    • Navigiere zu einem passenden Speicherort für dein Skript. Ein freigegebener Ordner wie Backup oder SFTP ist gut. Beispiel: cd /volume1/Daten/Backup
    • Erstelle die Skriptdatei (z.B. mount_sftp_folders.sh) mit einem Texteditor wie vi oder nano (falls installiert):vi mount_sftp_folders.sh
  3. Füge den Skriptinhalt ein: Kopiere den folgenden Inhalt in die Datei. Ganz wichtig: Passe die Pfade und Ordnernamen (Ordner1, Ordner2, Ordner3, Ordner4) an deine tatsächliche Struktur an.

    Code:
    #!/bin/sh
    # Skript zum Mounten der SFTP-Ordner
    
    # Stelle sicher, dass die Mount-Points im SFTP-Ordner existieren
    # (falls sie noch nicht erstellt wurden)
    mkdir -p /volume1/SFTP/Ordner1
    mkdir -p /volume1/SFTP/Ordner2
    mkdir -p /volume1/SFTP/Ordner3
    mkdir -p /volume1/SFTP/Ordner4
    
    # Vorhandene Mounts unmounten, um Fehler bei erneutem Start zu vermeiden
    # '2>/dev/null' unterdrückt Fehlermeldungen, wenn der Ordner nicht gemountet ist.
    /bin/umount /volume1/SFTP/Ordner1 2>/dev/null
    /bin/umount /volume1/SFTP/Ordner2 2>/dev/null
    /bin/umount /volume1/SFTP/Ordner3 2>/dev/null
    /bin/umount /volume1/SFTP/Ordner4 2>/dev/null
    
    # Erstelle die Bind-Mounts
    # Syntax: mount --bind /pfad/zum/original /pfad/zum/mountpoint
    /bin/mount --bind /volume1/Daten/Ordner1 /volume1/SFTP/Ordner1
    /bin/mount --bind /volume1/Daten/Ordner2 /volume1/SFTP/Ordner2
    /bin/mount --bind /volume1/Daten/Ordner3 /volume1/SFTP/Ordner3
    /bin/mount --bind /volume1/Daten/Ordner4 /volume1/SFTP/Ordner4
    
    # Passe die Berechtigungen der Mount-Points an
    # Gemountete Ordner gehören standardmäßig root. Du musst deinem ftp_user die Rechte geben.
    # 'users' ist die Standardgruppe für Benutzer auf Synology. Prüfe das ggf. für deinen ftp_user.
    /bin/chown -R ftp_user:users /volume1/SFTP/Ordner1
    /bin/chown -R ftp_user:users /volume1/SFTP/Ordner2
    /bin/chown -R ftp_user:users /volume1/SFTP/Ordner3
    /bin/chown -R ftp_user:users /volume1/SFTP/Ordner4
    
    # '775' bedeutet: Besitzer (ftp_user) und Gruppe (users) haben Lese-, Schreib-, Ausführungsrechte.
    # Andere Benutzer (nicht ftp_user und nicht in Gruppe users) haben Lese- und Ausführungsrechte.
    /bin/chmod -R 775 /volume1/SFTP/Ordner1
    /bin/chmod -R 775 /volume1/SFTP/Ordner2
    /bin/chmod -R 775 /volume1/SFTP/Ordner3
    /bin/chmod -R 775 /volume1/SFTP/Ordner4
    
    exit 0

  4. Skript speichern und beenden:
    • In vi: Drücke Esc, dann :wq und Enter.
    • In nano: Drücke Strg+X, dann Y (für speichern) und Enter.
  5. Mache das Skript ausführbar:chmod +x mount_sftp_folders.sh

  6. Korrigiere Zeilenumbrüche (falls das Skript unter Windows bearbeitet wurde):Wenn du das Skript auf einem Windows-PC bearbeitet und hochgeladen hast, könnten die Zeilenumbrüche falsch sein. Korrigiere dies mit:sed -i 's/\r$//' mount_sftp_folders.sh

Teil 3: Testen des Skripts (manuell)

Bevor du deine Synology neu startest, teste das Skript manuell.

  1. Stelle sicher, dass du noch als root per SSH verbunden bist.

  2. Führe das Skript aus:Navigiere zum Skript-Verzeichnis: cd /volume1/Daten/BackupFühre es aus: ./mount_sftp_folders.sh(Alternativ kannst du den vollen Pfad nutzen: /bin/sh /volume1/Daten/Backup/mount_sftp_folders.sh)

  3. Überprüfe die Mounts:
    • Schau nach, ob die Mounts aktiv sind: mount (Du solltest Zeilen wie /volume1/SFTP/Ordner1 type none (rw,bind) etc. sehen).
    • Überprüfe den Inhalt des SFTP-Ordners: ls -la /volume1/SFTP/ (Du solltest Ordner1, Ordner2, Ordner3, Ordner4 sehen).
    • Überprüfe die Inhalte: ls -la /volume1/SFTP/Ordner1 (Du solltest die Inhalte des Originalordners sehen).
  4. Teste den SFTP-Zugriff:
    • Verbinde dich mit deinem SFTP-Client (z.B. WinSCP, FileZilla) als ftp_user mit der IP-Adresse deiner Synology und der SFTP-Portnummer (standardmäßig 22).
    • Navigiere in den Ordner SFTP.
    • Du solltest jetzt die Ordner Ordner1, Ordner2, Ordner3 und Ordner4 sehen und deren Inhalt herunterladen und hochladen können (entsprechend der Rechte, die du gesetzt hast).
 
  • Like
Reaktionen: ottosykora

Teil 4: Automatisierung beim Systemstart (Aufgabenplaner)

Damit die Bind-Mounts nach jedem Neustart deiner Synology NAS automatisch wiederhergestellt werden, musst du eine "Ausgelöste Aufgabe" im Aufgabenplaner erstellen.

  1. Melde dich im Synology DSM als Administrator an.
  2. Geh zu Systemsteuerung > Aufgabenplaner.
  3. Erstelle eine neue Aufgabe:
    • Klicke auf Erstellen > Ausgelöste Aufgabe > Benutzerdefiniertes Skript.
  4. Konfiguriere die Aufgabe:
    • Allgemein:
      • Aufgabe: SFTP-Mounts beim Systemstart (oder ein anderer Name, der dir gefällt).
      • Benutzer: Wähle root aus der Dropdown-Liste.
      • Stelle sicher, dass "Aktiviert" angehakt ist.
    • Zeitplan: Muss hier nicht konfiguriert werden, da die Auslösung durch ein Ereignis erfolgt.
    • Aufgabeneinstellungen:
      • Ereignis: Wähle im Dropdown-Menü "Boot-up" aus. Das sorgt dafür, dass das Skript bei jedem Start deiner Synology NAS ausgeführt wird.
      • Benutzerdefiniertes Skript: Gib hier den vollständigen Pfad zum Skript mit dem expliziten Interpreter an:/bin/sh /volume1/Daten/Backup/mount_sftp_folders.sh(Ersetze den Pfad durch den tatsächlichen Speicherort deines Skripts).
  5. Speichere die Aufgabe:
    • Klicke auf OK, um die Aufgabe zu speichern.
    • Bestätige eventuelle Warnmeldungen.

Teil 5: Abschließender Test

  1. Starte deine Synology NAS neu.
  2. Nach dem Neustart sollten die Bind-Mounts automatisch aktiv sein.
  3. Teste den SFTP-Zugriff mit deinem ftp_user erneut, um sicherzustellen, dass alles wie gewünscht funktioniert.
Damit ist die Konfiguration abgeschlossen, und dein ftp_user sollte sicher und selektiv auf die gewünschten Ordner zugreifen können.
 
  • Like
Reaktionen: ottosykora
obwohl so was eher selten angefragt wird, denke ich sollte die irgendwo in der Wiki landen
 
  • Like
Reaktionen: ctrlaltdelete

Additional post fields

 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat