![Linux - 有没有办法伪造最高目录?](https://linux22.com/image/566297/Linux%20-%20%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E4%BC%AA%E9%80%A0%E6%9C%80%E9%AB%98%E7%9B%AE%E5%BD%95%EF%BC%9F.png)
/
是 Linux 中最高级别的目录。有没有办法可以将其伪装成其他目录/opt/rpmbuild/BUILDROOT
?
这是我的问题空间。我正尝试将 COTS 重新打包成 RPM 格式。COTS 以二进制形式出现,我需要先安装它,然后再将其打包成 RPM。安装是将其安装到/opt/app
目录中,我希望它将其安装到目录中,/opt/rpmbuild/BUILDROOT/opt/app
但我无法强制执行此操作。
答案1
chroot /opt/rpmbuild/BUILDROOT
可以做到这一点,但它要求你在 chroot 目录中安装了一个可以运行的操作系统。
除了使用 chroot 之外,一个更简单的选择是创建从 /opt/app 到 /opt/rpmbuild/BUILDROOT/opt/app 的符号链接:
mkdir -p /opt/rpmbuild/BUILDROOT/opt/app
ln -s /opt/rpmbuild/BUILDROOT/opt/app /opt/app
然后安装程序会认为它在 /opt/app 中运行,但实际上会进入 /opt/rpmbuild/BUILDROOT/opt/app。
答案2
看一看man chroot
,这应该对你有帮助。
答案3
你想要但你可能没有在问题中问到的是:组合的chroot和覆盖文件系统
modprobe overlay
mount -t overlay overlay -o lowerdir=/,upperdir=/home/overlay/root_fs/upper,workdir=/home/overlay/root_fs/work /home/overlay/root_fs/root_slash
cd /home/overaly/root_fs/root_slash
chroot .
我是说:您需要“覆盖文件系统”内核模块和必要的用户空间工具来安装它;您还需要这三个文件夹 - 一个用于工作,一个用于保存更改的上层文件夹,以及 chroot 文件夹。这样,您就可以使用您的操作系统作为基础,安装所有媒体、共享等,并在顶部仅写入对覆盖文件系统的更改。您的情况中的更改是“安装文件”。