2012-04-23 17 views
0

私はfakerootユーティリティに多くの混乱があります。 2つのrootfsに/ devフォルダに文字ノードを追加しようとしています。 rootfs_1のオーナーは自分ですが、secondのオーナーはrootです。Linux fakeroot confusion

  1. rootfs_1所有者は私です。 a。もし私がls -lをしたら。私は所有者を「Me」と呼んでいる。
    b。 rootfs_1/devにmknodを使ってノードを作成しようとすると失敗します。
    c。 $ fakerootコマンドが実行されます。
    d。 ls -al。私はrootとしてオーナーを見ます(私が知っているのは偽物です)
    e。これで、mknodを使ってrootfs_1/devにノードを作成できます。 f。
    f。出口
    g。新しく作成されたノードには、私が期待した "Me"という所有者がいます。

  2. rootfs_2オーナーがルート
    aです。 ls -l。私は所有者を「ルートルート」と見なします。
    b。 rootfs_2/devにmknodを使ってノードを作成しようとすると失敗します(期待通り)
    c。 $ fakerootコマンドが実行されます。
    d。今私はノードを作成しようとすると、それは失敗します。

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

誰もが、なぜケース1が動作し、ケース2が失敗するのかを詳しく説明できません。

答えて

3

すべてのことのfakerootが行う

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

+0

ちょっと、最初のシナリオでノードを作成できるのはなぜですか? mknodはどのようにfakerootで動作しましたか?私は別の質問をするべきだったと思う。正確にfakerootは何をし、それはどうしますか? –

+0

あああ:fakerootは、通常のファイルを作成してデバイスとして表示することで、mknodをシミュレートします。ただし、デバイスノードの機能はありません。たとえば、fakerootで作成された '/ dev/random'デバイスからデータを読み取ることはできません。 – duskwuff

+0

実際、fakeroot-ngのロードマップは可能です。しかし、それはまだ道のりです。アイデアは、あなたが作成した偽のデバイスと同じメジャー/マイナーのユーザーが読み書き可能なデバイスがあれば、代わりにそのデバイスが開かれるということです。 –