0

私は、fakeroot ユーティリティについて多くの混乱を抱えています。2 つの rootfs の /dev フォルダーにキャラクター ノードを追加しようとしています。rootfs_1 の所有者は自分ですが、2 番目の所有者は root です。

  1. rootfs_1 の所有者は私です。
    を。ls -l を実行すると。私は所有者を「Me Me」と
    見なします b. rootfs_1/dev で mknod を使用してノードを作成しようとすると失敗します。
    c. $fakeroot コマンドが通ります。
    d. ls-al。所有者をルートと見なします(これは偽物であることがわかっています)
    e. これで、mknod を使用して rootfs_1/dev にノードを作成できます。
    f.
    g を終了します。新しく作成されたノードの所有者は、予想どおり「私」です。

  2. rootfs_2 の所有者は root
    a です。ls -l。所有者を「ルート ルート」と
    見なします b.
    c. rootfs_2/dev で mknod を使用してノードを作成しようとすると失敗します。$fakeroot コマンドが通ります。
    d. ノードを作成しようとすると失敗します。

今、私は動作が期待されていることを知っています。しかし、fakeroot の仕組みと、fakeroot を介したシステム コールの流れについて混乱しています。fakeroot は LD_PRELOAD トリックを行うと思います。

ケース1が機能し、ケース2が失敗する理由を詳しく説明できる人はいますか。

ありがとう

4

1 に答える 1

3

fakeroot が行うことは、アクティブな間に変更されたファイルの「偽の」所有者を追跡することだけです。ファイルの作成など、他のファイルシステム操作はシミュレートされないため、ルートが所有するディレクトリがアクティブであっても、ファイルを作成することはできません。

于 2012-04-23T23:03:20.343 に答える