ルートなしでローカルディレクトリをマウントする方法

ルートなしでローカルディレクトリをマウントする方法

ユーザーが完全に読めるフォルダがあるとしましょう。私のホームフォルダにインストールしたいです。私はファイルが公開されることを望み~/、他のプログラムがそれがマウントされていることを「知らない」ことを望むので、シンボリックリンクを使用することはできません。この機能を実行できるヒューズプログラムはありますか?問題mountは、ルートアクセスが必要であることです。

また、ブート時ではなく、必要なときにこのディレクトリをマウントできる場合は感謝します。~/ログインしないと、私のディレクトリが暗号化されるからです。

答え1

さまざまなFUSEユーティリティがこれを実行できます。例えば、ファイルシステムバインディングmount --bindディレクトリは以前と同様に他の場所にマウントできます。

bindfs --no-allow-other /source/directory /mount/point

このオプションは、コメントを削除しない限り必須です--no-allow-other(ただし、セキュリティ関連の内容については、以下のlibfuseに関する注意事項を参照してください)。user_allow_other/etc/fuse.conf

削除:

fusermount -u /mount/point

FUSEファイルシステムには現在知られている問題/制限事項があります。パフォーマンスコスト、使用不可などに言及する価値があります。inotifyソースファイルシステムで発生するファイルシステムイベントと、次にリストされているセキュリティリスクを監視します。libfuse GitHubリポジトリ閲覧ファイル。

Linuxではバインドマウント実行にはmount --bindこれらの欠点はありません。ただし、コンテンツを編集するには少なくとも一度はrootアクセスが必要ですfstab
リンクされたQ / Aを参照してください。たくさんこのトピックについて詳しく説明します。

答え2

次のエントリを使用して/etc/fstabを一度設定できます。

/path/to/original/dir  /path/to/bind/dir  none  bind,rw,user,noauto  0 0 

マウントオプションは、以下を順番に指定します。

  • bind項目がバインドマウントであることを示します。
  • rw項目が読み取り/書き込みモードでマウントされることを指定します。
  • userroot 以外のユーザーがファイルシステムをマウントできるようにします。
  • noautomount -aこのエントリが起動時に自動的にインストールされないことを指定します。

root権限で一度設定してください。エントリが正しい場所にある場合は、rootではなくユーザーとしてインストールを実行できます。ただ実行してくださいmount /path/to/bind/dir

参考にするいくつかの点があります。

  • このuserオプションを使用すると、元のファイルシステムをマウントしたのと同じユーザーアカウントのみを削除できます。複数のユーザーが関与している場合は、このusersオプションを確認できます。man 8 mount詳細より。
  • このオプションは、(バイナリ実行を許可しない)、(setuid / setgidビットを尊重しない)、および(デバイスを解釈しない)のuser3つの異なるオプションを意味します。これらの機能を復元するには、そのオプションをリストの最後に追加します。たとえば、。これらのオプションはセキュリティに影響を与えることに注意してください。詳細より。noexecnosuidnodevbind,rw,user,noauto,execman 8 mount

答え3

この答えを見てくださいhttps://unix.stackexchange.com/a/767296/139357unshare と nsenter を使用して root 以外のユーザーにマウントをバインドする方法を示します。

この回答は改善されます。

関連情報