SFTP: Datei-Symlinks in einem inhaftierten Verzeichnis (chrooted)

22

Ich versuche, sftp so einzurichten, dass einige vertrauenswürdige Personen auf einige Dateien zugreifen, diese bearbeiten und sie erstellen können. Ich habe einen Benutzer in sein Home-Verzeichnis (/ home / name) gesperrt, bin jedoch auf ein Problem gestoßen. Ich möchte, dass sie auch auf andere Teile des VPS zugreifen können, da es sich auch um einen Spieleserver, einen Webhost usw. handelt, und ich möchte, dass sie die vollständige Kontrolle über Dateien außerhalb ihres inhaftierten Verzeichnisses haben.

Ich habe versucht, einen Symlink (ln -s) zum gewünschten Verzeichnis zu erstellen, aber es funktioniert nicht wie erwartet. Ich habe versucht (cp -rl) auf die Dateien zuzugreifen, die ich wollte, und es hat funktioniert - sie können die Dateien in ihrem Verzeichnis bearbeiten und es ändert sich die außerhalb des Gefängnisses gespeicherte. ABER sie können keine neuen Dateien erstellen (sie können, aber es wird nicht außerhalb des Gefängnisses aktualisiert). Ich weiß, dass ich das wahrscheinlich nicht "richtig" mache, aber was kann ich tun, um das zu tun, was ich will?

dukevin
quelle

Antworten:

40

Symlinks sind rein symbolisch: Sie enthalten nur einen Pfad. Wenn Sie einen Symlink öffnen, liest das Betriebssystem den Pfad und verwendet ihn stattdessen. In einer Chroot-Umgebung verweisen Links (insbesondere solche mit absoluten Pfaden) normalerweise nicht auf dieselbe Stelle, auf die sie in der normalen Umgebung verweisen.

Wenn das Server-Betriebssystem Linux ist, ist es am besten, das gesamte Verzeichnis irgendwo im chroot-Verzeichnis zu binden. Wenn Sie dies verwenden, ist es wichtig zu beachten, dass dies keine Kopie des Verzeichnisses ist. Alles, was hier gelöscht wird, wird aus dem anderen Verzeichnis entfernt (wichtig, wenn der Benutzer mvDateien oder Dateien speichern kann rm -rf). Um dies zu tun:

mount --bind /some/directory /somewhere/else

Die Dateien im Verzeichnis sollten echte Dateien sein. Symlinks hier haben wahrscheinlich die gleichen Probleme, die Sie beim Versuch haben, überhaupt auf die Dateien zu verlinken.

DerfK
quelle
Danke für deine Antwort. Können Sie mir bitte ein Tutorial erklären oder zeigen, wie ich das zum Laufen bringen kann? Ich habe ssh für die Gäste deaktiviert, so dass sie nur SFTP-Zugang haben. Welche Datei stelle ich diesen Befehl?
dukevin
Obwohl es nicht allgemein ratsam ist, könnten Sie auch Verzeichnis-Hardlinks erstellen, was einfacher wäre, aber nur, wenn sich alle Dateien auf demselben Gerät befinden.
Falcon Momot
Was ist der Befehl dafür
dukevin
@KevinDuke Dies können die Benutzer nicht selbst tun, sondern nur root mount. Es kann eine Möglichkeit geben, dies anzugeben, /etc/fstabdamit es beim Booten automatisch ausgeführt wird, aber ich bin nicht sicher, wie
DerfK
1
Vielen Dank. Ich habe einige Tutorials gelesen und es herausgefunden. Ihre Antwort hat mir wirklich geholfen, in die richtige Richtung zu weisen. Vielen Dank! Für diejenigen, die es wissen wollen, hat dies geholfen: aplawrence.com/Linux/mount_bind.html freebsd.org/doc/en_US.ISO8859-1/books/handbook/… redbottledesign.com/…
dukevin 20.10.12