- 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
- Melde dich im Synology DSM als Administrator an.
- 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).
- 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.
- 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).
- 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.- 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).
- 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
- 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
- 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.
- Mache das Skript ausführbar:chmod +x mount_sftp_folders.sh
- 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.- Stelle sicher, dass du noch als root per SSH verbunden bist.
- 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)
- Ü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).
- 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).
