Wie kann ich die Bereitstellung von SSHFS (sauber) aufheben, wenn sie auf einem NFS-Bereitstellungspunkt bereitgestellt werden?

15

Mein Mitarbeiter hat einen Desktop-Computer, /homeder auf unserem Dateiserver freigegeben ist. Ich habe ein Perl-Skript zum sshfsMounten eines bestimmten Verzeichnisses auf einem anderen SSH-Host entwickelt, das auf meinem Laptop einwandfrei funktioniert.

Auf seinem Computer kann das Skript sshfsdie Bereitstellung am Ende nicht aufheben und den Mountpoint unrein lassen. Ich habe keine andere Möglichkeit gefunden, den Mountpoint wiederherzustellen, als neu zu starten. Nach einigen Tests stellte ich fest, dass der Unterschied zwischen unseren Setups darin besteht, dass er /homeauf NFS läuft. In seinem /tmpfunktioniert es einwandfrei.

Nach dem Mounten ist während des Skriptvorgangs alles in Ordnung. Aber wenn das Töten sshfsProzess wird aufgelistet , wie <defunc>durch , psbis der übergeordneten Prozess (die Perl - Skript) beendet. Wenn Sie einen Raw- sshfsBefehl auf der Shell ausführen, tritt das Problem weiterhin auf.

Eine ls -dlAusgabe für den Mountpoint sieht folgendermaßen aus (wie erinnert - ich habe keine echte Kopie der Shell-Ausgabe zur Hand):

? 1 ? ? 4096 Feb  9 15:37 file_archive/

(nur Fragezeichen für die meisten Informationen, zumindest alle Berechtigungsdetails)

Der sshfs-Mount wird weiterhin von aufgelistet, mountaber ein Vorgang zum Aufheben der Bereitstellung schlägt fehl, und die Fehlerberechtigung wird verweigert, selbst wenn dies als ausgeführt wird root.

Ich habe Google durchsucht, aber nur viele Vergleiche zwischen sshfs und NFS gefunden, um Netzwerkdateisysteme auszuführen. Wie kann ich ein sshfs-Mount / Unmount im NFS-Verzeichnis sicher durchführen?

Daniel Böhmer
quelle

Antworten:

38

Sie sollten in der Lage sein, die Bereitstellung der sshfs-Freigabe aufzuheben, indem Sie Folgendes ausführen:

 fusermount -u /path/to/sshfs/share
CJ Travis
quelle
Ich habe es versucht, aber die Erlaubnis wurde verweigert . Natürlich umountmuss ein gewöhnlicher Benutzer fehlschlagen, wenn er als Nicht-Root-Benutzer ausgeführt wird.
Daniel Böhmer
Der Grund, warum Sie die Bereitstellung nicht aufheben können (mit einer beliebigen Methode), ist höchstwahrscheinlich, dass sein Ausgangsverzeichnis von NFS bereitgestellt wird, wo es mit der root_squashOption exportiert wird . Somit hat root keine Autorität in seinem Heimatverzeichnis. Sie können ausschalten, root_squashaber es ist wahrscheinlich sicherer, nur woanders zu montieren.
JFlo
2
Ich vergesse jedes Mal, dass umountoder fusermount -ufunktioniert nicht, wenn das Verzeichnis irgendwo verwendet wird. Also cdaus dem Verzeichnis vor der Verwendung fusermount -uoder Verwendunglsof /my/local/mountpoint
eli
16

Beenden Sie den Vorgang einfach mit pkill, um den gemounteten Ordnerpfad zu entfernen.

 pkill -kill -f "sshfs" && umount /path/to/sshfs/share
SAGAR
quelle
Manchmal muss ich "sudo umount -f" oder "sudo umount -l" anstelle von umount machen.
Fchen
0
sudo diskutil umount force ~/mount/

Dieser Befehl funktioniert anscheinend unter OS X.

Robert Mihai Ionas
quelle
6
Können Sie Ihre Antwort erweitern, um zu erklären, was dieser Code bewirkt und wie er das Problem behebt? Von unerklärlichem Code wird abgeraten , da er die Lösung nicht lehrt. Vielen Dank. aus der Überprüfungswarteschlange
fixer1234
Dies ist für OS X. Die Frage für Linux.
Duncan X Simpson