Articles of chroot

什么系统文件需要在一个监狱的环境php-fpm在Ubuntu上正常工作?

我在ubuntu 12.04上使用php5-fpm,并且为每个用nginx托pipe的域分别有池和chroot位置。 但是,我知道有些系统文件需要直接在监狱里,但是我需要哪些文件呢? 我知道dnsparsing目前还不行,而且我已经阅读了一些文章,说我需要将一些系统核心文件复制到目录中,但是他们从来没有真正详细说明我实际需要复制到哪些文件那里。 我知道有什么东西的DNS,时区(PHP似乎错误的任何时间/date相关的function)。 我只是想知道一般使用chroot。 它甚至值得使用它,或者更安全的做法是为每个域分配一个独立的分区,甚至为每个域分配一个单独的虚拟机(这将花费更多的资源)?

chroot替代

我正在开发一个webapp(在Ubuntu服务器上运行),它将允许用户运行Octave代码(基本上是Matlab)。 但是,我只希望他们能够读取或修改其指定的主文件夹中的文件夹。 我知道chroot是这样做的一种方式,但它是不安全的,你需要root权限chroot(理想情况下,应用程序将不需要)。 另外,我可以在运行之前阅读用户的代码,如果他们尝试写入文件时会抛出错误,但为此我需要考虑用户可能会违反规则的各种方式,以防止它。 我已经看过Linux-VServer,但是这需要为每个用户提供一个单独的虚拟服务器(除非我错了)。 编辑:我可以build立一个SSH连接,并监禁连接,但似乎不必要的资源贪婪。 有没有办法,我可以监狱的用户或过程到一个特定的文件夹,而不使用chroot ?

chroot如何影响dynamic链接?

以下是我遇到的情况: 我创build了一个debootstrap ubuntu特立独行(64位)环境。 我把它放在我的ubuntu(64位)清晰系统上的/env/mav/上。 我可以chroot进入/env/mav并且可以完美地利用一个特立独行的系统。 我甚至可以在chrooted环境外使用清晰的程序。 那就是/env/mav/bin/ls会运行。 但是,我注意到如果我修改LD_LIBRARY_PATH为/env/mav/lib [1] [2] 我运行的每一个程序(清醒和特立独行)都会立即崩溃。 (例如,ls导致段错误)。 kern.log显示: segfault at 7fece284aa18 ip 00007fece284aa18 sp 00007fff32028158 error 15 但是,显然如果我chroot到/env/mav ,每个程序运行良好。 并不是所有的库只是从jailed( /env/mav ) /lib读取? 那么在这种情况下chroot和修改LD_LIBRARY_PATH什么区别呢? 而且,如果我: mount -B /env /env/mav/env 然后chroot /env ,然后将LD_LIBRARY_PATH设置为/env/mav/lib ,一切仍然正常运行。 我对这里发生的事情感到不知所措。 有一些ld内部存储在某个地方吗? chroot做一些神奇的事情吗? [1]用例是从特定的环境中正确地运行程序到特立独行的jail以外的dynamic链接库。 [2]这只是一个简略的例子。 实际上/usr/lib等都包含在内。 包括特立独行的环境/ lib“毒药”的一切; 使用其他特立独行者库目录没有问题。

Udev规则没有被应用

我正在Android设备上运行Linux chroot环境,并试图与基于Atmel atmega2560(Arduino Mega衍生)微控制器进行通信。 执行“ls -ld / dev / ttyACM0”会显示调制解调器的以下权限: crw——- 1 root root 166, 0 Feb 11 22:28 /dev/ttyACM0 “lsusb”告诉我: Bus 003 Devices: ID 03eb:204b Atmel Corp. LUFA USB to Serial Adpater Project “udevadm info –attribute-walk –name = ttyACM0”说: Udevadm info starts with the device specified by the devpath and then walks up the […]

创build一个Chroot监狱,并将所有系统文件复制到监狱

我在linux中创buildchroot监狱,但我没有像ls / cd / gcc / g ++这样的系统文件。 什么是我需要复制到我的chroot监狱所需的libs / bin / systme文件?

在PHP中调用chroot

出于安全原因,某些应用程序在chroot环境中被隔离。 我需要通过一个PHP脚本调用这个应用程序。 类似的东西: exec('chroot /path/to/chroot command') 我需要成为使用chroot root 。 在PHP手册中有一个chroot() ,但是这个函数也需要root权限。 那么,如何在PHP中使用chroot ed命令?

运行g ++链接到特殊的库

这些想法可能看起来很奇怪 我在Gnu / Linux系统上创build了其他的环境,通过创build目录并将必要的文件复制到bin,lib,usr等等。 然后我做“chroot”,然后在里面做一些操作。 问题是环境中的所有文件都是从较旧的操作系统(2.4内核版本)中获取的。 但编译器必须采取现代(在现代语言标准的支持下)。 当我试图在环境中运行编译器时,出现错误: g++: /lib/libc.so.6: version `GLIBC_2.11' not found (required by g++) g++: /lib/libc.so.6: version `GLIBC_2.4' not found (required by g++) 然后,我将实际的libc.so.6复制到/ home / mylibs(内部环境)。 导出LD_LIBRARY_PATH: bash-3.00# export LD_LIBRARY_PATH="/home/mylibs/" 但似乎没有任何改变。 同样的错误依然存在。 下一个尝试是build立静态链接的gcc编译器。 不幸的是发生了一些问题( 静态链接的gcc )。 也许我从根本上是错误的…但是,我有没有其他的方式来build立可执行文件链接到旧的库,使用现代编译器? PS我的操作系统是ArchLinux。 'uname -r'显示'4.8.12-3-ARCH'。 最老的环境是由MCBC 3.0(俄文字母,不知道如何正确解密,也许武装部队的移动系统)与2.4内核版本。

我可以限制某个进程的某些文件的访问吗?

是否可以在Linux中启动一个进程,并限制对某些文件/目录的访问? 例如: $ start-process –enable-dir=./sandbox –exec="some-script.sh" some-script.sh将无法执行./sandbox以外的任何./sandbox 。

从内部检测一个chroot监狱

如何检测没有root权限的chroot监狱? 假设一个标准的BSD或Linux系统。 我想到的最好的方法是查看“/”的inode值,并考虑是否合理低,但是我想要一个更准确的检测方法。 [edit 20080916 142430 EST]文件系统是不够的,因为复制像/ boot和/ dev这样的东西来欺骗被监禁的用户并不困难。 [edit 20080916 142950 EST]对于Linux系统来说,检查/ proc中的意外值是合理的,但是那些首先不支持/ proc的系统呢?

如何在chroot jail中运行命令,而不是以root身份执行sudo命令?

我设置了一个最小的chroot,并希望避免sudo或su,但是仍然以非root用户身份运行我的进程。 这对于运行chroot请求者root来说是一个小技巧。 我可以写一个这样的程序,看起来像这样: uid = LookupUser(args[username]) // no /etc/passwd in jail chroot(args[newroot]) cd("/") setuids(uid) execve(args[exe:]) 这是我最好的select,还是有一个标准的工具,为我呢? 我在这里推出自己的: