我对fakeroot实用程序有很多困惑。我试图将一个字符节点添加到/ dev文件夹到两个rootfs。 rootfs_1的所有者是我自己,而第二个的所有者是root。
rootfs_1所有者是我。
一个。如果我做ls -l。我认为老板是“我我”
湾我尝试在rootfs_1 / dev中使用mknod创建一个节点,但它失败了
C。 $ fakeroot命令通过。
d。 ls -al。我认为所有者是根(我知道是假的)
即现在我可以使用mknod在rootfs_1 / dev中创建一个节点
F。退出
G。新创建的节点将所有者称为“我”,这是我所期望的。
rootfs_2所有者是root
一个。 ls -l。我认为所有者是“根”“
湾我尝试在rootfs_2 / dev中使用mknod创建一个节点,但它失败了。(预期)
C。 $ fakeroot命令通过。
d。现在我尝试创建一个节点,但它失败了。
现在,我知道行为是预料之中的。但我对fakeroot如何工作以及通过fakeroot进行系统调用的流程感到困惑。我认为fakeroot做了LD_PRELOAD技巧。
任何人都可以解释为什么案例1有效并且案例2失败。
由于
答案 0 :(得分:3)
fakeroot所做的就是跟踪在其处于活动状态时被修改的文件的“假”所有者。它不会模拟任何其他文件系统操作,例如文件创建,因此即使它处于活动状态,您仍然无法在根目录中创建文件。