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

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

如何在 Ubuntu 14.04 里面配置 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:

 
 
  1. $ sudo apt-get install debootstrap
  2. $ sudo apt-get install schroot

2. 配置 Schroot

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

 
 
  1. sudo mkdir /linoxide

编辑 schroot 的配置文件:

 
 
  1. sudo nano /etc/schroot/schroot.conf

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

 
 
  1. [saucy]
  2. description=Ubuntu Saucy
  3. location=/linoxide
  4. priority=3
  5. users=arun
  6. root-groups=root

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

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

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

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

 
 
  1. cd /linoxide
  2. sudo debootstrap --variant=buildd --arch amd64 saucy /linoxide/ http://archive.ubuntu.com/ubuntu/
  3. sudo chroot /linoxide /debootstrap/debootstrap --second-stage

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

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

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

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

4. 完成 chroot 环境

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

 
 
  1. sudo nano /etc/fstab

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

 
 
  1. proc /linoxide/proc proc defaults 0 0
  2. sysfs /linoxide/sys sysfs defaults 0 0

保存并关闭文件。

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

 
 
  1. $ sudo mount proc /linoxide/proc -t proc
  2. $ sudo mount sysfs /linoxide/sys -t sysfs

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

 
 
  1. $ sudo cp /etc/hosts /linoxide/etc/hosts

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

 
 
  1. $ schroot -l

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

 
 
  1. $ sudo chroot /linoxide/ /bin/bash

测试安装的版本:

 
 
  1. # lsb_release -a
  2. # uname -a

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

 
 
  1. $ DISPLAY=:0.0 ./apps

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

退出 chroot 环境:

 
 
  1. # exit

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

 
 
  1. $ sudo umount /test/proc
  2. $ sudo umount /test/sys

----------------------------------------------------------------------------------------------------------------------------

原文发布时间:2015-02-25
本文来自云栖合作伙伴“linux中国”
目录
相关文章
|
16天前
|
Ubuntu 数据安全/隐私保护
Ubuntu22.04LTS环境部署实战
这篇文章提供了Ubuntu 22.04 LTS操作系统的详细安装步骤,包括选择语言、键盘布局、网络配置、软件源设置、磁盘分区、安装OpenSSH服务以及完成安装和首次登录系统的过程。
60 6
Ubuntu22.04LTS环境部署实战
|
17天前
|
Ubuntu 网络安全 开发工具
Ubuntu19.04的安装过程详解以及操作系统初始化配置
本文详细介绍了Ubuntu 19.04操作系统的安装过程、初始化配置、网络设置、软件源配置、SSH远程登录以及终端显示设置。
40 1
Ubuntu19.04的安装过程详解以及操作系统初始化配置
|
4天前
|
存储 Prometheus 监控
在Ubuntu系统上安装与配置Prometheus的步骤
通过以上步骤,您应该已经成功在Ubuntu系统上安装并配置了Prometheus。您现在可以开始使用Prometheus收集和分析您的系统和应用程序的指标数据了。
13 1
|
13天前
|
Ubuntu 应用服务中间件 网络安全
Ubuntu 22.04环境下为Odoo开启80端口的方法
通过以上步骤,你应该能够在Ubuntu 22.04环境下为Odoo开启80端口。访问你的域名时,Nginx会将请求代理到Odoo,允许你通过80端口访问Odoo应用。
26 1
|
16天前
|
Ubuntu Oracle 关系型数据库
Oracle VM VirtualBox之Ubuntu 22.04LTS双网卡网络模式配置
这篇文章是关于如何在Oracle VM VirtualBox中配置Ubuntu 22.04LTS虚拟机双网卡网络模式的详细指南,包括VirtualBox网络概述、双网卡网络模式的配置步骤以及Ubuntu系统网络配置。
43 3
|
16天前
|
Ubuntu 开发工具 虚拟化
MacOS系统基于VMware Fusion配置Ubuntu 22.04LTS环境
这篇文章介绍了如何在MacOS系统上使用VMware Fusion虚拟化软件配置Ubuntu 22.04 LTS环境,包括自定义VMware Fusion网段、Ubuntu系统安装、配置root用户登录、设置静态IP地址、修改默认网卡名称、配置PS1变量、设置登录界面为字符界面、修改软件源和进行vim基础优化等步骤。
59 2
|
17天前
|
Ubuntu
树莓派 —— ubuntu上通过netplan配置网络
树莓派 —— ubuntu上通过netplan配置网络
|
22天前
|
Ubuntu Shell C++
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等
35 1
|
18天前
|
存储 Ubuntu Linux
ubuntu上配置multipath
ubuntu上配置multipath
|
18天前
ubuntu20.04 下桥接模式配置
ubuntu20.04 下桥接模式配置