我有一个根文件系统RFS1,它具有自己的组和用户,并且当前正在被内核使用。我安装了另一个具有自己的组和用户的根文件系统RFS2。如何在RFS2下的文件/目录上运行chown以从RFS2的/ etc / groups下列出的组内创建所有者。当OS(linux)使用RFS1时,我正在执行chown。
由于您想将RFS2文件整理给RFS2用户,因此您不需要RFS1整理,所以最直接的方法是chroot(1)。
您安装了RFS2,例如在/mnt/rfs2
上。然后,按照/mnt/rfs2
的指示将其根目录到目标here。
chroot
创建一个在/mnt/rfs2
中入狱的新进程。当该过程引用/
时,操作系统会将其转换为/mnt/rfs2
。如果进程引用/hello/world
,则操作系统会将其翻译为/mnt/rfs2/hello/world
。
如果RFS2有自己的用户,那么它就有自己的/etc/passwd
,可以公平地假设它拥有自己的/bin/
,/usr/lib/
等。>
一旦更改根目录,请确保您的PATH
与二进制文件的实际位置匹配。
在chroot监狱中,将在PATH
中搜索您执行的每个命令,例如chown
。它可能在PATH
中找到,但是现在是RFS2的/bin/chown
(即/bin/chown
),而不是RFS1的。 chown可能使用的每个动态库也将来自RFS2文件系统。
[当您使用/mnt/rfs2/bin/chown
时,chown user:group
将在chown
和/etc/passwd
中搜索用户和组,但是它们是RFS2的密码和组文件。
完成后,您将运行/etc/group
,exit
为您创建的被监禁的Shell进程将退出。尽管发生了所有这些事情,但计算机上的其余过程仍在使用RFS1。