什么是Chroot?
chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以 `/`,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为 `/` 位置。
为什么使用Chroot?
在经过 chroot 之后,系统读取到的目录和文件将不在是旧系统根下的而是新根下(即被指定的新的位置)的目录结构和文件,因此它带来的好处大致有以下3个:
1.增加了系统的安全性,限制了用户的权力;
在经过 chroot 之后,在新根下将访问不到旧系统的根目录结构和文件,这样就增强了系统的安全性。这个一般是在登录 (login) 前使用 chroot,以此达到用户不能访问一些特定的文件。
2.建立一个与原系统隔离的系统目录结构,方便用户的开发;
使用 chroot 后,系统读取的是新根下的目录和文件,这是一个与原系统根下文件不相关的目录结构。在这个新的环境中,可以用来测试软件的静态编译以及一些与系统不相关的独立开发。
3.切换系统的根目录位置,引导 Linux 系统启动以及急救系统等;
chroot的作用就是切换系统的根位置,而这个作用最为明显的是在系统初始引导磁盘的处理过程中使用,从初始 RAM磁盘 (initrd) 切换系统的根位置并执行真正的 init。另外,当系统出现一些问题时,我们也可以使用 chroot 来切换到一个临时的系统。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
Chroot使用
1.建立个Chroot后的根目录.
mkdir
/var/chroot
2.使用jail+chroot模式,编译安装jail.
从http:
//www
.jmcresearch.com
/static/dwn/projects/jail/jail
.
tar
.gz可以下载到jail的最新版本,它是由位于http:
//www
.jmcresearch.com
/projects/jail/
的jail chroot项目小组开发的。该软件包包含了帮助自动创建chroot
"监牢"
的C程序、Perl程序和Bash脚本。
首先将jail.
tar
.gz置于任意目录,然后执行命令:
tar
xzf jail.
tar
.gz &&
cd
jail
/src
按照个人实际情况修改makefile文件,尤其是安装路径(默认安装路径是
/tmp/jail
)、体系结构(jail支持Linux、FreeBSD、IRIX和Solaris),以及编译选项等。最后执行命令:
make
&&
make
install
3.使用jail的Per程序脚本创建Chroot环境
/tmp/jail/mkjailenv
/var/chroot
jail软件包提供了几个Perl脚本作为其核心命令,包括mkjailenv、addjailuser和 addjailsw。如addjailsw会从真实文件系统中拷贝二进制可执行文件及其相关的其它文件(包括库文件、辅助性文件和设备文件)到该
"监牢"
中。
4.为chroot环境增加常用命令,例如:
ls
、
cat
、
cp
等
/usr/local/bin/addjailsw
/var/chroot
备注:如果是Centos 7 的童鞋请安装下这个软件不然以上命令会报错
strace
5.这时候还进不去chroot环境,因为没有
bash
,需要拷贝本地
bash
到chroot环境
ldd
/bin/bash
linux-vdso.so.1 => (0x00007ffdbd3e5000)
libtinfo.so.5 =>
/lib64/libtinfo
.so.5 (0x00007f23337da000)
libdl.so.2 =>
/lib64/libdl
.so.2 (0x00007f23335d6000)
libc.so.6 =>
/lib64/libc
.so.6 (0x00007f2333214000)
/lib64/ld-linux-x86-64
.so.2 (0x00007f2333a0a000)
cd
/var/chroot/
cp
/lib64/
{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} .
/lib64/
cp
/bin/bash
.
/bin
------------------------华丽的分割线----------------------------------
如何在chroot环境中使用Yum
1.创建rpm目录
mkdir
–p
/var/chroot/var/lib/rpm
2.指定rpm rebuild 目录
rpm --rebuilddb --root=
/var/chroot
3.下载Centos7 yum源
wget http:
//mirror
.centos.org
/centos/7/os/x86_64/Packages/centos-release-7-2
.1511.el7.centos.2.10.x86_64.rpm
4.安装Centos7 yum源
rpm -ivh --root=
/var/chroot
--nodepscentos-release-7-2.1511.el7.centos.2.10.x86_64.rpm
5.往chroot环境里面安装yum
yum --installroot=
/var/chroot
install
-y rpm-build yum
6.拷贝本机解析文件到chroot环境
cp
/etc/resolv
.conf
/var/chroot/etc/
7.进入chroot环境
chroot
/var/tmp/chroot
/bin/bash
–l
|
本文转自Devin 51CTO博客,原文链接:http://blog.51cto.com/devingeng/1752251