将程序安装到chroot / jail最好的方法是什么?

在基于Debian的系统上

我创build了一个简单的chroot / jail,使用类似于https://github.com/pmenhart/make_chroot_jail/blob/master/make_chroot_jail.sh的脚本,目的是创build一个基本上除了运行之外什么都不做的监狱所需的程序(为了安全)。 我的问题是,一旦build立监狱,什么被认为是最好的方法安装到监狱的程序? 由于监狱是最小的,没有软件包pipe理器,如apt,没有构build工具。

我需要安装程序到一个普通的帐户,并将所有需要的文件复制到chroot目录? 如果是这样,我将如何跟踪所有的变化,以了解我需要做的事情? 一个像rkhunter这样的小程序可以很容易地跟踪,但是像MySQL这样的大程序我无法做到,因为会有太多的文件需要复制和configuration文件来修改。

或者,有没有办法将一个最小的软件包pipe理器(如apt)安装到监狱中,安装所需的程序,最后删除软件包pipe理器?

有没有更好的做法,我不知道?

谢谢!

之前有人build议:

  • 我知道维护多个chroot安装的额外负担
  • 我知道它不会像您希望的那样增加安全性,因为configuration不当的chroot可能会被破坏。 容器可能是一个更好的select。
  • 我知道一些程序已经具有内置chroot的function,但是我想知道一个安装程序的通用方法。

  1. 有多种方式来设置chroot监狱。 就我个人而言,我已经看到了超过50个不同的脚本。 所有的监狱都是相似的,但是有较小或较大的差异,所以没有通用的方法来做任何事情。

  2. 关于安装软件的chroot监狱最常见的用法是安装所有源代码。 有时使用chroot jail特别用于从源代码安装软件,避免从软件包(例如zlib,libpng或其他常用库)安装在本地机器上的依赖项。

  3. 不幸的是,许多不同的chroot jail脚本之间常见的是它们没有任何“升级模式”,所以每次你想升级你的基础系统软件包或者监狱里面的软件时,你都必须重新设置这个监狱。 这当然可以编写脚本,但这与正常的软件包升级不同。

  4. searchOpenVZ或LXC半虚拟化技术。 它们都被用来创build“容器”(具有共享内核的独立系统)。 两者都基于chroot概念,但在内核中的许多其他层上添加了分离。

LXC更新更现代,但OpenVZ提供更好的安全隔离。 而且他们都可以安装几乎完整的系统,包pipe理器,软件包库等,这样就可以正常安装和升级软件,就像在基础系统中一样。