2009-07-16 9 views
3

Ok, das Setup ist ein wenig verschachtelt. Tadeln Sie mich nicht, ich bin nicht der Systemadministrator.Mounten Sie ein Remote-Dateisystem mit SSHFS

Hier ist die Situation. Es gibt eine Maschine, von der ich von außerhalb des Netzwerks SSH kann. Ich kann nur als root (ja, Sie haben richtig gehört) mit meinem privaten Schlüssel entfernt. Ich weiß, dass es typischer ist, sich als Benutzer anzumelden und dann Privilegien zu erhöhen, aber in diesem Fall muss ich das Gegenteil tun.

Das Problem ist, dass ich SSHFS verwenden möchte, um das Dateisystem remote zu mounten. Ich habe das perfekt funktioniert. Ich möchte jedoch nicht, dass jede Datei, für die ich einen Fehler mache, Root-Berechtigungen widerspiegelt. Ich möchte zuerst (su auf ein Benutzerkonto) abheben.

Wer weiß, wie ich das mit SSHFS tun kann?

+0

Wenn ich richtig verstehe, dann können Sie sshfs in root auf dem Remote-System, kann aber nicht (wegen der sysadmin; auch root) sshfs in einem weniger privilegierten Konto? – Inshallah

+1

serverfault.com? – liori

+0

Ich hatte ein ähnliches Problem und stellte fest, dass der Ordner, den ich bearbeiten wollte, tatsächlich ein Symlink war. Ich sshfs jetzt direkt in den Ordner (der eigentliche reale Pfad, nicht auf einen Symlink). Das hat für mich funktioniert. – Richard

Antwort

8

Sie können ein Skript erstellen, um den Aufruf des sftp-Subsystems auf dem Remote-Computer abzufangen. Legen Sie das folgende Skript irgendwo auf dem Remote-Server, sagen wir mal/root/bin/sftp_intercept:

#!/bin/sh 
exec sudo -u less_privileged_user /usr/lib/openssh/sftp-server 

und dann den Anruf tätigen, wie so:

sshfs [email protected]:dir mountpoint -o sftp_server=/root/bin/sftp_intercept 

die dann die gewünschten Ergebnisse liefern sollte.

Sie benötigen einen entsprechenden sudoers-Eintrag, um sudo zu verwenden, ohne dass Sie nach einem Passwort fragen müssen, und vergessen Sie nicht, "chmod 755 ~/bin/sftp_intercept" einzugeben.

Stellen Sie außerdem sicher, dass/usr/lib/openssh/sftp-server tatsächlich der Pfad zum sftp-Server ist. Wenn nicht, dann ist es vielleicht/usr/lib/sftp-server.

+1

Was, nach 'sudo', niemand erinnert sich' su' anymor? 'su less-privileged_user -c '/ usr/lib/openssh/sftp-server' sollte generell kein Passwort von root verlangen. – ephemient

+1

Vielen Dank ... sudo verursachte Probleme aus einem unbekannten Grund ... Ich benutzte -o sftp_server = "su user -c 'exec/usr/libexec/openssh/sftp-server'" –

1

Die sshfs manpage schlägt vor, dass

-o uid=$YOURUID -o gid=$YOURGID

zu Ihrem sshfs Aufruf geben sollte den Benutzer/die Gruppe der Dateien einstellen, dass Sie diese uid/gid erstellen. Sie müssen diese natürlich auf dem Remote-System finden.

+0

Diese Optionen betreffen nur lokale Dateien, nicht Dateien auf dem Remote-Computer. Aus der Frage ist nicht ganz klar, ob das gewollt ist; Ich denke, dass es die Dateien auf dem entfernten Rechner sein könnten, an denen er den Besitz ändern möchte. – Inshallah