问题标签 [chroot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1227 浏览

installation - RPM -i 在创建 chroot 监狱时无法打开文件

我一直在寻找这个错误,但找不到任何东西。我正在尝试在 Centos 6.2 64 位版本上创建一个 chroot 监狱,我正在执行以下操作:

哪个失败说:

对详细 (-ivv) 输出执行相同操作:

我似乎找不到原因,因为所有文件/目录都存在,并且无法修复它。有什么建议吗?

谢谢!

0 投票
3 回答
448 浏览

linux - 如何以 Debian 稳定版为目标,但在测试中开发?

我们有一些专门为 Debian stable (x86) 开发的 C++ 应用程序。

目前,这些应用程序的开发也是使用 Debian stable (x86) 系统完成的,因此开发人员拥有与目标系统上相同的所有库版本。
有时,我还需要处理这些组件,它一直困扰着我,我被一个非常过时的 KDevelop 版本(4.0.1 与最新的 4.4.1)所困扰。我想使用更新的系统进行开发(如最新的 Ubuntu 或 Debian 测试),但如何创建适合目标系统的二进制文件?
有没有一些简单的方法可以告诉编译器/链接器使用仅在目标平台上可用的库版本?
我看了Emdebian和他们的交叉编译包,但我认为这对我不起作用。他们似乎只有针对 ARM 等其他架构的软件包。

0 投票
1 回答
97 浏览

unix - 在监禁进程后使用 execlp

基本上我想在一个被监禁的进程中执行一个 shell 命令。当我尝试以下代码(作为普通用户和 root 用户)时,它没有产生任何输出

我尝试了 perror() 函数,它给了我一个“没有这样的文件或目录”错误。是否可以在被监禁的进程中运行 shell 命令?如果是这样,我们该怎么做?

0 投票
1 回答
2759 浏览

cross-compiling - chroot 或虚拟监狱环境——用于交叉编译?

我很期待在我的主机 Ubuntu 上为我的 ARM 目标进行编译。
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=31&t=8478

上面的链接声明使用 chroot 并直接将您的程序编译到主机上目标的根文件系统中。

有人建议使用像 scratchbox 这样的监狱虚拟环境。
为特定目标平台设置交叉编译环境

https://en.wikipedia.org/wiki/Chroot

1> 与 chroot 相比,虚拟监狱环境有什么优势?

2> chroot 是否会影响所有打开的终端或.. 运行命令的特定终端?

3> 我们究竟应该使用什么来交叉编译 Jail,比如 scratch-box 或 chroot。

0 投票
1 回答
2703 浏览

android - 无法在 android 中使用 init shell 脚本执行 chroot

我想在 Android ICS Emulator 中运行 glibc,为此我将 glibc 捆绑为 AOSP 根文件夹中的一个单独文件夹,其中包含 Android.mk,内容如下:

它将整个 glibc 文件夹复制到 out/target/product/generic/system/ 文件夹。并使snod包含在system.img中

带有 glibc 文件夹的 startglibc.sh 和 init.sh 脚本分别被复制到 /system/glibc 和 /system/glibc/root/ 文件夹。

我已经编译了busybox并将其复制到/system/bin/文件夹中。

/system/glibc/startglibc.sh 的内容如下:

startglibc.sh 从 init.goldfish.rc 调用如下:

我已使用 system/core/include/private/android_filesystem_config.h 将 777 和 root:root 作为 init.sh 的文件权限,如下所示:

在启动期间,会调用 startglibc.sh 脚本,但在执行 chroot 时会出现权限被拒绝错误。

我是否错过了使用 init.sh 进行 chroot 的任何内容?还是我在 Android AOSP 构建期间错误地复制了 glibc 文件夹?

0 投票
3 回答
6499 浏览

version-control - 通过 Crouton 在 Chromebook 上本地访问 Google Drive

我正在使用带有 Crouton chroot 环境 ( https://github.com/dnschneid/crouton ) 的三星 Chromebook。这彻底改变了我对 Chromebook 对于开发人员类型工作的实用性的看法。我喜欢它。

但现在我想在我的各种 PC 和笔记本电脑之间同步文件。使用 git 当然是一种选择,但它需要手动签入我的工作。如果我忘记了怎么办?我最近被宠坏了,使用 Dropbox 或 Google Drive 来自动保持我的文件完全同步。现在我的 Chromebook 上的 Crouton 的问题是,我确实看到了使用 Google Drive 同步项目文件夹的任何明显方法。我认为 Drive 将是更简单的路线,因为它是 Google 产品。但如果 Dropbox 可以正常工作,那也太棒了。

有没有人研究过这个并找到了可行的解决方案?

0 投票
1 回答
5575 浏览

linux - chroot 替代

我正在开发一个允许用户运行 Octave 代码(基本上是 Matlab)的 web 应用程序(在 Ubuntu 服务器上运行)。但是,我只希望他们能够读取或修改其指定主文件夹中的文件夹。

我知道chroot这是这样做的一种方法,但它不安全,并且您需要 chroot 的 root 权限(理想情况下,应用程序不需要)。

另外,我可以在运行之前读取用户的代码,如果他们尝试写入文件,我会抛出错误,但为此我需要考虑用户可能违反我的规则的每一种方式,以防止它发生。

我看过Linux-VServer但这需要为每个用户单独的虚拟服务器(除非我弄错了)。

编辑:我可以建立一个 SSH 连接并监禁连接,但这似乎不必要地贪婪资源。

有没有一种方法可以在不使用的情况下将用户或进程监禁到特定文件夹chroot

0 投票
4 回答
9410 浏览

c - chroot() 是否需要 root 权限?

一切都在问题之中。当我尝试将 chroot 与“.”一起使用时 或完整的路径名作为参数,perror 告诉我“不允许操作”。如果我的问题的答案是肯定的,还有其他方法可以更改根目录吗?(没有使用 strcmp() / strncmp() 的野蛮方法)

谢谢 !

0 投票
1 回答
761 浏览

bind - chroot 和 bindfs 的问题

我在使用Bindfschroot时遇到了一个特殊问题(可能是一个错误) 。我创建了一个示例沙箱目录,其中包含nodejs及其所有依赖项,以便能够在 chroot 监狱中运行。

好吧,我所做的是创建一个临时目录,在其中我从示例沙箱中挂载以下目录

  • 垃圾桶
  • 开发者
  • ETC
  • 包括
  • 库64
  • 执行程序
  • 用户

要挂载我的目录,我使用bindfs,使用以下命令模板

所以,我通过执行以下命令进入上述目录cd :new-sandbox(65534是nobody的uid)

我收到以下错误响应

当我运行时chroot . node,我应该得到节点控制台。有趣的是,当我ls在目录中运行时,我得到以下响应,表明文件和文件夹归用户所有nobody(正如我在 bindfs 命令中声明的那样)。

当我尝试在原型沙箱中执行相同的操作时,该沙箱具有原始文件夹而不是安装了 bindfs 的文件夹,一切正常,即使以用户 nobody 执行也是如此。

您知道为什么会发生这种情况以及如何解决吗?非常感谢。

PS 请不要提示我使用 Linux 容器或虚拟机或我想使用的任何其他替代技术。

0 投票
1 回答
655 浏览

arm - 使用 fakeroot/fakechroot 的 ARM Linux rootfs 网络无法正常工作

我使用buildroot创建了一个rootfs,但使用了带有glibc的crosstool-ng工具链。这向我展示了所需的最少文件集。然后,我将所有库替换为直接从.deb压缩包中提取的库。然后我添加和混合(也来自.deb包)。我还根据自己的喜好修改了、和文件。将其上传到我的设备后,很多工作都在进行。 带我到正确的地方。 返回根。但是,任何与 DNS 相关的东西都不起作用。例如返回错误地址。我已经复制了armelfakerootfakechrootresolv.confhostsnsswitch.confcd /whoamiping google.comlibnss_*libresolv库以及我认为必要的所有其他内容。输入相同的设置,但在我的主机上使用qemuchroot有效,但我试图找出它在我的目标设备上不起作用的原因。

当我运行时,strace ping google.com我得到以下信息:

很多事情进展顺利。它知道在搜索可执行文件和库时将/data/local/target添加到路径中。您可以看到它找到了各种libnss_*库,并且发现主机文件不只是 at /etc/hosts,但是为什么您认为它没有在正确的位置查找nsswitch.confand resolv.conf?这似乎是fakechroot我如何使用它的问题或问题。