在Ubuntu系统中配置chroot环境的教程

   你可能会有很多理由想要把一个应用、一个用户或者一个环境与你的 linux 系统隔离开来。不同的操作系统有不同的实现方式,而在 linux 中,一个典型的方式就是 chroot 环境。

  在这份教程中,我会一步一步指导你怎么使用 chroot 命令去配置一个与真实系统分离出来的独立环境。这个功能主要可以用于测试项目,以下这些步骤都在 Ubuntu 14.04 虚拟专用服务器(VPS)上执行。

  学会快速搭建一个简单的 chroot 环境是一项非常实用的技能,绝大多数系统管理员都能从中受益。

  Chroot 环境

  一个 chroot 环境就是通过系统调用,将一个本地目录临时变成根目录。一般所说的系统根目录就是挂载点"/",然而使用 chroot 命令后,你可以使用其它目录作为根目录。

  原则上,任何运行在 chroot 环境内的应用都不能访问系统中其他信息(LCTT译注:使用 chroot 把一个目录变成根目录,在里面运行的应用只能访问本目录内的文件,无法访问到目录外的文件。然而,运行在 chroot 环境的应用可以通过 sysfs 文件系统访问到环境外的信息,所以,这里有个“原则上”的修饰语)。

  Chroot 环境的用处

  测试一个不稳定的应用服务不会影响到整个主机系统。

  就算使用 root 权限做了些不当的操作,把 chroot 环境搞得一塌糊涂,也不会影响到主机系统。

  可以在你的系统中运行另外一个操作系统。

  举个例子,你可以在 chroot 环境中编译、安装、测试软件,而不去动真实的系统。你也可以在64位环境下使用 chroot 创建一个32位环境,然后运行一个32位的程序(LCTT泽注:如果你的真实环境是32位的,那就不能 chroot 一个64位的环境了)。

  但是为了安全考虑,chroot 环境为非特权用户设立了非常严格的限制,而不是提供完整的安全策略。如果你需要的是有完善的安全策略的隔离方案,可以考虑下 LXC、Docker、vservers等等。

  Debootstrap 和 Schroot

  使用 chroot 环境需要安装 debootstrap 和 schroot,这两个软件都在 Ubuntu 的镜像源中。其中 schroot 用于创建 chroot 环境。

  Debootstrap 可以让你通过镜像源安装任何 Debian(或基于 Debian 的)系统,装好的系统会包含最基本的命令。

  Schroot 命令允许用户使用相同的机制去创建 chroot 环境,但在访问 chroot 环境时会做些权限检查,并且会允许用户做些额外的自动设置,比如挂载一些文件系统。

  在 Ubuntu 14.04 LTS 上,我们可以通过两步来实现这个功能:

  1. 安装软件包

  第一步,在Ubuntu 14.04 LTS 主机系统上安装 debootstrap 和 schroot:

  代码如下:

  $ sudo apt-get install debootstrap

  $ sudo apt-get install schroot

  2. 配置 Schroot

  现在我们有工具在手,需要指定一个目录作为我们的 chroot 环境。这里创建一个目录先:

  代码如下:

  sudo mkdir /linoxide

  编辑 schroot 的配置文件:

  代码如下:

  sudo nano /etc/schroot/schroot.conf

  再提醒一下,我们现在是在 Ubuntu 14.04 LTS 系统上。如果我们想测试一个软件包能不能在 Ubuntu 13.10(代号是“Saucy Salamander”) 上运行,就可以在配置文件中添加下面的内容:

  代码如下:

  [saucy]

  description=Ubuntu Saucy

  location=/linoxide

  priority=3

  users=arun

  root-groups=root


  根据你的系统要求,调整上面的配置信息。

  3. 使用 debootstrap 安装32位 Ubuntu 系统

  Debootstrap 命令会在你的 chroot 环境里面下载安装一个最小系统。只要你能访问镜像源,你就可以安装任何基于 Debian 的系统版本。

  前面我们已经创建了 /linoxide 目录用于放置 chroot 环境,现在我们可以在这个目录里面运行 debootstrap 了:

  代码如下:

  cd /linoxide

  sudo debootstrap --variant=buildd --arch amd64 saucy /linoxide/ http://archive.ubuntu.com/ubuntu/

  sudo chroot /linoxide /debootstrap/debootstrap --second-stage

  你可以将 --arch 的参数换成 i386 或其他架构,只要存在这种架构的镜像源。你也可以把镜像源 http://archive.ubuntu.com/ubuntu/ 换成离你最近的镜像源,具体可参考 Ubuntu 官方镜像主页。

  注意:如果你是在64位系统中创建32位系统,你需要在上面第3行命令中加入 --foreign 选项,就像下面的命令:

  代码如下:

  sudo debootstrap --variant=buildd --foreign --arch i386 saucy /linoxide/ http://archive.ubuntu.com/ubuntu/

  下载需要一段时间,看你网络带宽性能。最小系统大概有500M。

  4. 完成 chroot 环境

  安装完系统后,我们需要做一些收尾工作,确保系统运行正常。首先,保证主机的 fstab 程序能意识到 chroot 环境的存在:

  代码如下:

  sudo nano /etc/fstab

  在文件最后面添加下面的配置:

  代码如下:

  proc /linoxide/proc proc defaults 0 0

  sysfs /linoxide/sys sysfs defaults 0 0

  保存并关闭文件。

  挂载一些文件系统到 chroot 环境:

  代码如下:

  $ sudo mount proc /linoxide/proc -t proc

  $ sudo mount sysfs /linoxide/sys -t sysfs

  复制 /etc/hosts 文件到 chroot 环境,这样 chroot 环境就可以使用网络了:

  代码如下:

  $ sudo cp /etc/hosts /linoxide/etc/hosts

  最后使用 schroot -l 命令列出系统上所有的 chroot 环境:

  代码如下:

  $ schroot -l

  使用下面的命令进入 chroot 环境:

  代码如下:

  $ sudo chroot /linoxide/ /bin/bash

  测试安装的版本:

  代码如下:

  # lsb_release -a

  # uname -a

  为了在 chroot 环境中使用图形界面,你需要设置 DISPLAY 环境变量:

  代码如下:

  $ DISPLAY=:0.0 ./apps

  目前为止,我已经成功地在 Ubuntu 14.04 LTS 上安装了 Ubuntu 13.10。

  退出 chroot 环境:

  代码如下:

  # exit

  清理一下,卸载文件系统:

  代码如下:

  $ sudo umount /test/proc

  $ sudo umount /test/sys

时间: 2025-01-01 16:53:59

在Ubuntu系统中配置chroot环境的教程的相关文章

ubuntu系统中配置/安装SVN的教程

ubuntu安装和配置SVN第一步:安装apache2  libapache2-svn subversion sudo apt-get install apache2 sudo apt-get install subversion sudo apt-get install libapache2-svn 安装完后按照提示 Run '/etc/init.d/apache2 restart' to activate new configuration! 重启apache2第二步:创建SVN库和项目 s

Ubuntu系统中安装编译环境和OpenGL图形驱动

安装编译环境和OpenGL图形驱动,为安装geant4做基础准备. 1.安装基本编译环境 sudo apt-get install build-essential 2.安裝OpenGL Library sudo apt-get install libgl1-mesa-dev 3.安裝OpenGL Utilities sudo apt-get install libglu1-mesa-dev OpenGL Utilities 是一組建構於 OpenGL Library 之上的工具組,提供許多很方便

CentOS6.7系统中配置LNMP环境_Linux

1:查看环境: [root@localhost ~]# cat /etc/redhat-release 2:关掉防火墙 #重启后生效开启 [root@localhost ~]# chkconfig iptables off or #即时生效,重启后失效开启 [root@localhost ~]# service iptables stop 关闭selinux #即时生效,重启后失效 [root@localhost ~]#setenforce 0 //将SELINUX=enforcing修改为di

在Ubuntu系统中安装MariaDB数据库的教程_mariadb

MariaDB是一个开源数据库且100%与MySQL兼容,目标是替代MySQL数据库.MariaDB的背景 : 2008年,MySQL被后来被Oracle在2010年收购的Sun Microsystems收购了. 最初被Sun公司的收购由于符合项目的需要而受到MySQL社区的欢呼,但是这种情绪并没有持续太久,接下来被Oracle的收购,不幸期望远远低于预期.许多MySql的开发者离开了Sun和Oracle公司开始新的项目.在他们中间就有MySQL的创建者以及项目长期技术带头人之一的Michael

在Ubuntu系统中配置NFS

1.部署NFS Server端 1.1安装nfs-kernel-server sudo apt-get install nfs-kernel-server 1.2配置/etc/hosts.deny vi /etc/hosts.deny #在文件中增加内容 ###NFSDAEMONS portmap:ALL lockd:ALL mountd:ALL rquotad:ALL statd:ALL 1.3配置/etc/hosts.allow vi /etc/hosts.allow #在文件中增加内容 #

在Ubuntu系统中使用LXC容器的教程

  使用"容器"来保证主机环境的安全性,这个概念早在十年前就已经存在(例如 FreeBSD 的 jail 虚拟化技术),但是直到最近,随着部署云架构需求越来越多,像 LXC 和 Docker 这种 Linux 下的容器才成为被关注的焦点.当然,由于主流厂商(云服务商如亚马逊主推 AWS,微软主推 Azure;发行版如红帽.Ubuntu等)组成的强大靠山,Docker 已经被放在媒体的聚光灯下面,其实,Docker 里面所谓的"容器"技术是由 LXC 提供的. 你只是

如何在 Ubuntu 14.04 里面配置 chroot 环境

如何在 Ubuntu 14.04 里面配置 chroot 环境 你可能会有很多理由想要把一个应用.一个用户或者一个环境与你的 linux 系统隔离开来.不同的操作系统有不同的实现方式,而在 linux 中,一个典型的方式就是 chroot 环境. 在这份教程中,我会一步一步指导你怎么使用 chroot 命令去配置一个与真实系统分离出来的独立环境.这个功能主要可以用于测试项目,以下这些步骤都在 Ubuntu 14.04 虚拟专用服务器(VPS)上执行. 学会快速搭建一个简单的 chroot 环境是

Debian/Ubuntu系统中安装和配置UFW-简单的防火墙

自从计算机互连后,各种服务迅速发展.用户使用的电子邮件.社交媒体.在线商城.即时聊天甚至网络会议等服务如雨后春笋般涌现.但从另一方面来说,这些连接服务也具有双刃剑,比如它们当中的病毒.恶意软件.特洛伊木马等会向计算机发送恶意消息. 安装 UFW 防火墙 作为最大的计算机网络,互联网上可并不都是善意的用户.因此,为了确保我们的计算机或服务器安全,我们需要进行保护. 在你的计算机或服务器上一个必须有的组件就是防火墙.在维基百科中,其定义是: 防火墙是计算机中一款应用软件或基于硬件的网络安全系统.它根

Ubuntu系统部署HHVM网站环境(LEMH)

  HHVM(HipHop Virtual Machine),由大名鼎鼎的FACEBOOK公司开发的用来执行PHP脚本的虚拟机环境,可以大大的提高PHP执行环境性能.相比较我们传统的网站环境来看,同等的硬件配置可以承受更大的流量访问用户压力,只不过我们国内还没有流行起来,提供这类安装环境的教程比较少,也或者我们暂时还没有重视.   之前一段时间有网友提到是否可以提供这些方面的教程,毕竟老左之前也没有安装过和使用过,于是只能现学现用,参考国内.国外的已有较少的教程.这篇文章介绍在Ubuntu 14