Gibt es eine narrensichere Möglichkeit auf Benutzerebene, die Beendigung von SSHFS-Verbindungen zu erzwingen?

Gibt es eine narrensichere Möglichkeit auf Benutzerebene, die Beendigung von SSHFS-Verbindungen zu erzwingen?

Ich möchte, sshfsdass Verbindungen nach einer bestimmten Zeit, maximal einer Stunde, beendet werden. Dies bedeutet, dass der atBefehl mit fusermount -udemselben Befehl oder Skript gestartet werden muss, das ich zum Starten des sshfsMounts verwende.

Ich stelle jedoch fest, dass der Befehl fusermountfehlschlagen kann, wenn die Dateien verwendet werden, obwohl ich möchte, dass ater funktioniert, unabhängig davon, ob in der Verbindung noch Dateien geöffnet sind oder nicht.

fusermountMeiner Erfahrung nach besteht die einzige zuverlässige Möglichkeit darin, die Befehle als Root auszuführen oder die sshfsVerbindung über den killBefehl zu beenden.

Gibt es eine andere Möglichkeit, eine Trennung zu erzwingen, ohne als Root zu arbeiten? Das Problem ist, dass ich möglicherweise nicht am Terminal bin, wenn die Dateien noch geöffnet sind, aber aus Sicherheitsgründen muss die Verbindung unterbrochen werden, sofern ich den atBefehl nicht abbreche.

Antwort1

Wenn Sie nur den Einhängepunkt freigeben möchten und die SSH-Verbindung nicht beenden möchten, können Sie ausführen fusermount -z /mount/point. Dadurch wird ein verzögertes Unmounten durchgeführt: Der Einhängepunkt ist nicht mehr mit dem Mount verknüpft, aber das Mount verschwindet erst, wenn alle geöffneten Dateien auf diesem Mount geschlossen sind.

Wenn Sie nur die SSH-Verbindung schließen möchten und sich nicht um die Bereitstellung kümmern, können Sie einfach den SFTP-Serverprozess beenden. Das ist das Schöne an FUSE: Beenden Sie den Prozess, der den Dienst anbietet, und er ist weg. Eine Bereitstellung kann keine Systemressource sperren. Die Prozesse, die versuchen, auf die Dateisysteme zuzugreifen, erhalten einen Fehler (ENOTCONN „Transportendpunkt ist nicht verbunden“).

Wenn Sie die Prozesse beenden möchten, die Dateien auf diesem Dateisystem geöffnet haben, können Sie denfuserBefehl (keine Beziehung zu FUSE, außer dass das F der erste Buchstabe von „file“ ist).

fuser -k /mount/point

verwandte Informationen