FUSE権限でアクセスできないサブインストールは、アクセスすると消えます。どのように?

FUSE権限でアクセスできないサブインストールは、アクセスすると消えます。どのように?

FUSEファイルシステムを使用してテストケースを設計してみてくださいsshfs。私の考えはsshfsNFSに関するオリジナルの質問。しかし、私の考えは私の予想通りうまくいかなかった。

ここで何が起こっているのでしょうか?

$ mkdir /tmp/alan
$ sudo mkdir /root/mnt
$ sudo sshfs alan@localhost:/tmp/alan /root/mnt
$ mkdir /tmp/alan/mnt
$ sudo mount --bind /root/mnt/mnt /root/mnt/mnt
$ chmod a-rwx /tmp/alan
$ findmnt | grep mnt
  /root/mnt        alan@localhost:/tmp/alan  fuse.sshfs  ...
    /root/mnt/mnt  alan@localhost:/tmp/alan  fuse.sshfs  ...

$ mount -oremount,bind,ro /root/mnt/mnt
mount: /root/mnt/mnt: cannot mount (null) read-only.

$ findmnt | grep mnt
  /root/mnt        alan@localhost:/tmp/alan  fuse.sshfs  ...

ベースが消えます。

このコマンドを再実行してmount -oremountコマンドにプレフィックスを追加すると、sudo strace -e trace=mountシステムコールが「権限の拒否」で失敗したことを示すため、その部分が期待どおりに機能しているようです。

mount("none", "/root/mnt/mnt", 0x55b13233d620, MS_MGC_VAL|MS_RDONLY|MS_REMOUNT|MS_BIND, NULL) = -1 EACCESS (Permission denied)

ベストアンサー1

そのmount -oremountコマンドをsudo ls /root/mnt/mntEACCESS

ls /tmp/alan/mntディレクトリ以外のファイルが削除または交換されても、エラーが発生するため失敗しますEACCESSEACCESS/tmp/alan/mnt

通常、/tmp/alan/mntサブマウントが削除された場合、またはディレクトリ以外のものと交換された場合、サブマウントは/root/mnt/mnt無効になり、自動的に削除されます。この場合、カーネルがまだディレクトリに存在するかどうかをsshfs尋ねるとき、カーネルに「権限が拒否されました」と教えてください。カーネルはこれを「該当するファイルやディレクトリがありません」などの失敗として扱います。/root/mnt/mntsshfs

実際にもそうかはわかりません。

lsサブインストールも「転送エンドポイントが接続されていません」を返すENOTCONNと消えないようです。このエラーは、親マウント FUSE プロセスを終了すると発生します。 (望むよりhttps://github.com/systemd/systemd/issues/9872)

おすすめ記事