私はfakerootユーティリティに多くの混乱があります。 2つのrootfsに/ devフォルダに文字ノードを追加しようとしています。 rootfs_1のオーナーは自分ですが、secondのオーナーはrootです。Linux fakeroot confusion
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"という所有者がいます。rootfs_2オーナーがルート
aです。 ls -l。私は所有者を「ルートルート」と見なします。
b。 rootfs_2/devにmknodを使ってノードを作成しようとすると失敗します(期待通り)
c。 $ fakerootコマンドが実行されます。
d。今私はノードを作成しようとすると、それは失敗します。
今、私は動作が期待されていることを知っています。しかし、fakerootがどのように動作し、システムコールがfakerootを通って流れるのか、私は混乱しています。私はfakerootがLD_PRELOADトリックをすると思います。
誰もが、なぜケース1が動作し、ケース2が失敗するのかを詳しく説明できません。
ちょっと、最初のシナリオでノードを作成できるのはなぜですか? mknodはどのようにfakerootで動作しましたか?私は別の質問をするべきだったと思う。正確にfakerootは何をし、それはどうしますか? –
あああ:fakerootは、通常のファイルを作成してデバイスとして表示することで、mknodをシミュレートします。ただし、デバイスノードの機能はありません。たとえば、fakerootで作成された '/ dev/random'デバイスからデータを読み取ることはできません。 – duskwuff
実際、fakeroot-ngのロードマップは可能です。しかし、それはまだ道のりです。アイデアは、あなたが作成した偽のデバイスと同じメジャー/マイナーのユーザーが読み書き可能なデバイスがあれば、代わりにそのデバイスが開かれるということです。 –