ユーザースペースの異なる場所にディレクトリバインディングを許可するLinux vfsツールはありますか(例:mount --bind)。

ユーザースペースの異なる場所にディレクトリバインディングを許可するLinux vfsツールはありますか(例:mount --bind)。

ユーザープロセスの場合は、ディレクトリを他の場所にマウントしたいが、root権限を持たないユーザースペースにマウントしたいと思います。 mount --bind /origin /destに似ていますが、vfsラッパーがあります。ユーザーモードで微調整されたchrootと同じです。

プログラムは、必要なパスを「置き換える」ためにシステムコールをファイルにラップします。次のコマンドラインを使用して呼び出すことができます。

バインディングvfs /fake-home:/home ls /home

私はこれがすでに存在すると確信しています! :)

答え1

あなたはそれを使用することができますプロットあなたの例とほぼ同じ方法です。

proot -b /fake-home:/home ls /home

BindFS / FUSEとは異なり、PRootはユーザーに属していないファイルとディレクトリをバインドできます。

答え2

これオウムプログラムはユーザーが要求した操作を実行できます。システムコールを傍受し、特定のパスをリダイレクトします(たとえば、/anonftpFTPを介してリモートファイルに透過的にアクセスするために始まるすべてのパスが再マップされます)。また、完全にユーザー空間で実行されます。

しかし、一般的で一般的なネットワークプロトコルの印象的な配置にもかかわらず、parrotあなたが必要とするように、単純なファイルシステム - >ファイルシステムの書き換えを実行するモジュールはありません。 Cプログラミングを知っていれば、追加するのはとても簡単です。

または、ファイルシステムバインディング(続きを走るヒューズ) は mount --bindユーザー空間のように動作します。 (しかし、これはあなたの質問で言及したリダイレクトとは反対です/home。)/fake-home

答え3

VFSはすでにファイルシステムのルートではなくマウントを許可します。 fstabエントリにまたはオプションをuser追加します。usersvfs.usermount=1/etc/sysctl

しかし、これらのどれもchrootのような制御機能を提供しません。このbindオプションは、権限を変更したり、同じファイルシステムとコンテンツへの2番目のmtabエントリである「代替」アクセスを許可しません。バンドルインストールの修正は元のインストールに影響します。

さらに進む前に最終目標を明確にするようにします。

答え4

mount --bindmount_namespacesを使用すると、他のプロセスでユーザーを見ることはできません。ただし、通常はmount --bindrootユーザーにのみ適用されます(セキュリティ上の理由から)。したがって、root以外のユーザーにmount_namespacesを便利にするには、まず次のものを使用する必要があります。ユーザーネームスペース新しい名前空間で「ローカルルート」になると、これは許可されます。

次のようにシェルで使用できます。この例では、chrootディレクトリを準備するときのユーザーとマウントスペースの使用を具体的に示しています(これは通常chroot許可されています)。

unshare --user --map-root-user --mount-proc --pid --fork
mkdir -p newroot/dev
mount --rbind /dev newroot/dev
....other chroot preparation....
chroot newroot
su - user1

mount --rbindディレクトリに別のマウントポイントが含まれている場合(私の場合はそうです)、mount --bind新しいuser&mount名前空間にのみ適用されるため(代わりに)使用しています。/dev/

おそらく、これについての説明は、ユーザーが一般に権限のないユーザーには見えないこと、つまり「サブインストール」によって隠されたサブディレクトリを表示する方法がないことです。ベースは剥がさないで、--rbind許してください。

関連情報