如果 /proc 未安装,我如何知道我正在 chroot 中运行?

如果 /proc 未安装,我如何知道我正在 chroot 中运行?

我想知道我是否在脚本的一部分中,如果不是,chroot则不允许安装(与中的情况不同)/proc我如何知道我正在 chroot 中运行?)。如何判断我是否处于chroot即使/proc未安装状态?

我确实有 root 访问权限。这是在 Fedora 上。该解决方案不应依赖于所使用的文件系统。

答案1

Debian chroot 将特定文件放入/etc,但这需要合作。

但如果它像正常的根一样,那就像正常的根一样。因此,如果您没有发现差异,请假设您不在 chroot 中(无论如何它都是等效的)。

困难的方法是检查是否/与安装根设备时得到的相同,但这需要您是根设备。其他方法需要/proc(或root)。

答案2

使用systemd-detect-virt -r。 (必须是根)

答案3

与其他答案不同,这个答案不需要您成为 root。跑步unshare -U true。如果成功,那么您就不再处于 chroot 状态。如果失败并显示unshare: unshare failed: Operation not permitted,那么你就失败了。这有效是因为commit 3151527ee007b73a0ebd296010f1c0454a919c7d: userns: 如果用户已 chroot,则不允许创建

警告:unshare也可能因其他一些原因而失败。如果成功,那么您肯定不在 chroot 中,但如果失败,那么您很可能是在 chroot 中。

相关内容