标签: chroot

如何(合法地)将自己放入chroot沙箱后访问文件?

更改Linux C++程序,为用户提供有限的文件访问权限.因此,程序自己chroot到一个沙箱,其中包含用户可以获得的文件.一切顺利.

但是,现在,程序需要根据自己的需要访问某些文件(而不是用户),但它们位于沙箱之外.我知道chroot允许访问在chroot 之前打开的文件,但在这种情况下,所需的文件可能会有数百个,所以打开它们对于可能需要的那对夫妇来说显然是不切实际的.

有办法获取文件吗?

c c++ unix linux chroot

4
推荐指数
2
解决办法
1541
查看次数

为什么在"chroot"(以及union/overlay文件系统)上使用Pythons的"virtualenv"?

首先让我说我是通用软件的支持者(一般来说;-).我不是Python的专家,但似乎'virtualenv'实用程序解决了几乎相同的问题'chroot'可以帮助解决 - 引导一个可以作为root传递的目录树,从而有效地保护真正的目录树,如果需要.

由于我不是已经提到的Python专家,我想知道 - virtualenv可以解决chroot不能解决的问题是什么?我的意思是,我不能只是设置一个漂亮的假根树(可能使用工会安装),chrootpip install在我的新环境中做一个我想要的包,然后在我的新环境的范围内玩,运行python脚本,什么不是?

我在这里错过了什么吗?

更新:

在任何应用程序目录中都无法在本地安装软件包/模块,我的意思是,没有root权限,以及随后没有覆盖或添加文件/usr/lib/usr/local/lib?看起来这就是virtualenv的作用,但我认为它必须符号链接或以其他方式为每个创建的环境提供python解释器,不是吗?

python linux chroot virtualenv

4
推荐指数
1
解决办法
1952
查看次数

如何退出perl脚本中的chroot?

在编写用于完全自动化虚拟机设置的perl脚本(Xen pv)时,我遇到了一个很小的问题.

使用perl的chroot函数我在guest文件系统上做我的事情,然后我需要回到我的初始真正的根.我到底怎么回事?

脚本示例:

`mount $disk_image $mount_point`;

chdir($mount_point);
chroot($mount_point);

#[Do my things...]

#<Exit chroot wanted here>

`umount $mount_point`;

#[Post install things...]
Run Code Online (Sandbox Code Playgroud)

我试过退出; 但显然退出整个脚本.

正在寻找一种退出chroot的方法我发现了许多旨在退出已经设置好的chroot 的脚本(权限提升).由于我在这里做chroot这些方法不适用.

试过一些疯狂的事情:

opendir REAL_ROOT, "/";
chdir($mount_point);
chroot($mount_point);
chdir(*REAL_ROOT);
Run Code Online (Sandbox Code Playgroud)

但是没有去.

更新 一些要考虑的要点:

  • 我无法在多个文件中拆分脚本.(愚蠢的原因,但真的,我不能)
  • chrooted部分涉及使用脚本早期收集的大量数据(在chroot之前),强制不需要在chroot内运行另一个脚本.
  • 使用open,system或backticks并不好,我需要运行命令并根据输出(不是退出代码,实际输出)做其他事情.
  • chroot之后的步骤取决于chroot内部的操作,因此我需要在内部,外部使用我定义或更改的所有变量.
  • 叉子是可能的,但我不知道正确处理从孩子传递信息到孩子的信息的好方法.

linux perl chroot

3
推荐指数
1
解决办法
2539
查看次数

chroot 内的 openssl

当我尝试从 chroot 监狱内部建立 ssl 连接时,出现以下错误:

twisted.internet.error.ConnectionLost: Connection to the other side was lost in a non-clean fashion.
Run Code Online (Sandbox Code Playgroud)

我使用 openssl 0.9.6 和 pyopenssl 来建立 ssl 连接,并且我在 Linux (centos 5.5) 上使用适用于 python 2.4 的twisted python 库。

经过一些故障排除后,我发现 openssl 失败是因为它试图读取 /dev/random 文件,而失败是因为 chroot 内没有 /dev/random 。我已经确认,如果我在 chroot 中创建 /dev/random 文件,连接就会成功。

  • 我考虑过安装 devfs 文件系统,其中包含我的 chroot 中的 /dev/random 文件,但我的应用程序及其系统管理员有一个坏习惯,即删除 chroot 的根目录而不首先卸载所有内容。
  • 我考虑过在执行 chroot 之前从 /dev/random 文件中读取内容,但我当前的设置是在二进制文件启动之前调用 chroot,并且更改 chroot 发生的位置将对应用程序进行太大的更改我不确定何时或如何完成它。
  • 我想过在 chroot 监狱外运行一个程序,该程序仅从 /dev/random 读取并写入名为 /jail/dev/random 的命名文件管道,可以从 chroot 监狱内部访问它,但我不喜欢这样做运行一个单独的进程只是为了访问随机性源。而且,仅仅初始化 openssl 似乎过于复杂。

如果我无法从程序中访问 /dev/random ,初始化 openssl 的正确方法是什么?

python linux random openssl chroot

3
推荐指数
2
解决办法
4084
查看次数

如何退出 chroot

我可以 chrootDir.chroot

Dir.chroot("/var/chroot/mychroot")
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能从 chroot 返回呢?

ruby chroot

3
推荐指数
1
解决办法
2万
查看次数

schroot在centos 6上给出错误

当我使用命令时:schroot -c 32bit -- bash --login -c "rm -rf ~/SC32 ;"
我收到这些错误:
E:20copyfiles:cp:无法创建常规文件`/ var/lib/schroot/mount/32bit-dcc62f68-de18-4d2a-95d9-b71f0be314ce/etc/resolv. conf':没有这样的文件或目录
E:32bit-dcc62f68-de18-4d2a-95d9-b71f0be314ce:Chroot设置失败:stage = setup-start

因为我是Linux环境的新手我不知道如何解决这个问题错误.
我正在使用的Cent操作系统是6.3和x64架构我也在/etc/schroot/schroot.conf中配置了32位

[32bit]  
type=directory  
description=CentOS 6.3 32bit  
directory=/chroot/32bit  
users=temp  
root-groups=root  
personality=linux32  
Run Code Online (Sandbox Code Playgroud)

另外我有这个目录/ chroot/32bit
我不是系统的root用户.
任何人都可以告诉我该怎么做才能解决这个错误?

centos chroot

3
推荐指数
1
解决办法
1438
查看次数

SFTP 内联放置,无需交互

我正在尝试自动化应用程序部署,作为我需要将文件上传到服务器的一部分。我已经为 SFTP 服务器创建了一个最小用户并配置了 chroot,但我不知道如何上传非交互式文件。

目前我正在做 scp myfile buildUser@myserver.com:newBuilds/

我试过sftp buildUser@myserver.com myfilenewBuilds是 chroot 目录)但这没有上传任何东西,但它确实连接了。

支持这种方法而不使用的原因scp是限制 scp 访问要困难得多(根据我所了解的信息)。

command-line sftp scp chroot

3
推荐指数
2
解决办法
6422
查看次数

Python和os.chroot

我正在用Python编写一个Web服务器作为业余爱好项目.该代码针对*NIX机器.我刚开始在Linux上开发,甚至比Python本身更新.

我担心人们会打破我用来提供网站的文件夹.最明显的方法是过滤对/../../etc/passwd等文档的请求.但是,我担心可能有一些聪明的方法可以上去我不知道的目录树,因此我的过滤器无法捕获.

我正在考虑使用os.chroot添加,以便根目录是网站本身.这是一种防止这些越狱攻击的安全方法吗?这样做有什么潜在的陷阱会伤害我的道路吗?

python linux chroot

2
推荐指数
1
解决办法
5335
查看次数

CakePHP 2.0:数据库连接"Mysql"丢失或无法创建

在安装CakePHP 2.0之后(修改过,我说我在cakephp 2.0的干净安装上遇到同样的问题)我发现自己面临一个我无法解决的错误.

组态:

服务器:debian weezy 7

用户:测试

结构:/ wwwjail/siteroot/test/htdocs/[app/...]

nginx配置

cat/etc/nginx/sites-available/test

server {
    listen IP:80 default;
    server_name domain.fr;
    access_log /var/log/nginx/test.access.log;
    error_log  /var/log/nginx/test.error.log;

    autoindex off;
    index index.php index.html;
    root /wwwjail/siteroot/test/htdocs/;

    location ~ \.php$ {
                        try_files $uri =404;

                        fastcgi_intercept_errors on;
                        fastcgi_pass unix:/wwwjail/siteroot/test/php-fpm.sock;

                        include /etc/nginx/fastcgi_params;
                        fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
    }
}
Run Code Online (Sandbox Code Playgroud)

php5-fpm配置

cat /etc/php5/fpm/pool.d/test.conf

[test]
listen = /wwwjail/siteroot/test/php-fpm.sock
chroot = /wwwjail/siteroot/test/htdocs

user = test
group = test

listen.allowed_clients = 127.0.0.1
listen.owner = test
listen.group = test
listen.backlog = -1
pm …
Run Code Online (Sandbox Code Playgroud)

php cakephp chroot nginx

2
推荐指数
1
解决办法
1万
查看次数

在bash中执行chroot中的函数

在bash中,将函数传递给主机chroot的理想方法是什么?

例如,

install_script () {
    wget some_source_files && configure && make && make install
}
Run Code Online (Sandbox Code Playgroud)

和,

some_command -v foo >/dev/null 2>&1 || install_script
Run Code Online (Sandbox Code Playgroud)

但如果我想从主机执行同样的操作,我该怎么做呢?

我能想到的一种方法是将函数传递给chrooted目录中的文件,

cat > $chrooted_dir/etc/install_script.sh <<"EOF"

#!/bin/bash
wget source_files ; ./configure ; make ; make install

EOF
Run Code Online (Sandbox Code Playgroud)

并从主机执行,

chroot $chrooted_dir /bin/bash "check_command  || /etc/install_script.sh"
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更优雅的方式来解决这个问题?理想情况下,我想从主机中的cript执行命令,并在chroot系统内执行一些安装.

PS:我也很欣赏任何相关的源/链接来理解bash句柄函数声明和随后对chrooting的继承.

linux bash shell chroot

2
推荐指数
1
解决办法
1831
查看次数

标签 统计

chroot ×10

linux ×6

python ×3

bash ×1

c ×1

c++ ×1

cakephp ×1

centos ×1

command-line ×1

nginx ×1

openssl ×1

perl ×1

php ×1

random ×1

ruby ×1

scp ×1

sftp ×1

shell ×1

unix ×1

virtualenv ×1