Chinaunix首页 | 论坛 | 博客
  • 博客访问: 689545
  • 博文数量: 181
  • 博客积分: 2548
  • 博客等级: 少校
  • 技术积分: 1739
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-29 16:36
个人简介

爱咋咋地

文章分类

全部博文(181)

文章存档

2023年(17)

2022年(19)

2021年(3)

2020年(1)

2018年(1)

2017年(1)

2014年(1)

2013年(4)

2012年(11)

2011年(19)

2010年(22)

2009年(71)

2008年(5)

分类: LINUX

2014-01-03 14:51:36

使用febootstrap 安装 centos6 的 chroot  jails 环境

喜欢乱安装各种开源库,经常把系统搞得不能用。另外最近工作中申请到一台较高配置的服务器,与兄弟们多人共享,需要找一个防止互相影响的方法。
基本想法有两种:
1.安装虚拟机
2.使用chroot jail
基于码农的劣根性,对于虚拟机带来的性能损失彻底抵制,加上从来没有玩过jail系统,决定丢弃vm,试试jail

母系统centos 6 ,jail系统 centos 6

1. 安装febootstrap: sudo yum install -y febootstrap

2. 指定rootfs的路径:export ROOTFS=/disk9/centos6_rootfs

3. 使用febootstrap安装jail系统:febootstrap centos6 $ROOTFS 

4.创建tmp目录
mkdir $ROOTFS/tmp
chmod 777 $ROOTFS/tmp

5.登陆脚本:login_rootfs.sh
************************************
$ cat login_rootfs.sh
#!/bin/bash
usage(){
        echo `basename $0 []`
}
mount_chrootfs_proc(){
        mountpoint $ROOTFS/proc >/dev/null 2>&1
        if [ $? -ne 0 ]
        then
                echo "mounting /proc for chrootfs"
                sudo mount -o bind /proc $ROOTFS/proc
        fi
}
user="developer"
if [ $# -ge 1 ]
then
        user=$1
fi
mount_chrootfs_proc
sudo chroot --userspec=$user $ROOTFS /bin/bash --login
************************************

$chmod a+x login_rootfs.sh

6. cp /etc/resolv.conf $ROOTFS/etc/ (否则dns不通)
    cp -R /usr/lib/locale/* $ROOTFS/usr/lib/locale/
   使用locale命令验证
     ./login_rootfs.sh root
     locale
     exit

7.添加用户
./login_rootfs.sh root
 useradd developerls
exit

#为developer用户添加sudo权限
#vi $ROOTFS/etc/sudoers

8. 生成设备文件
rm -rf $ROOTFS/dev/urandom
sudo mknod $ROOTFS/dev/urandom c 1 9
sudo chown :users $ROOTFS/dev/urandom 注意:将替换为当前木系统用户名
 (解决yum不能用问题)

rm -rf $ROOTFS/dev/random
sudo mknod $ROOTFS/dev/random c 1 8
sudo chown :users $ROOTFS/dev/random 
chmod 666 $ROOTFS/dev/random 

rm -rf $ROOTFS/dev/null
sudo mknod $ROOTFS/dev/null c 1 3
sudo chown :users $ROOTFS/dev/null 
chmod 666 $ROOTFS/dev/null

./login_rootfs.sh root(上面的三个应该也可以登录后创建吧)
rm -rf ptmx
mknod ptmx c 5 2
rm -rf console
mknod console c 5 1
chmod 600 console
chmod 600 ptmx

rm -rf tty
mknod tty c 5 0
rm -rf zero
mknod zero c 1 5
rm -rf full
mknod full c 1 7
chmod 666 zero full tty

9.使用yum 安装所需工具
./login_rootfs.sh root
yum install -y autoconf automake gcc gcc-c++ tar git
...
exit

10. 使用developer登录并工作
./login_rootfs.sh


11.待解决的问题
1)因为 chroot jail环境不是通过login 方式进来的,所以环境变量HOME的值为/root ,这个导致以其他用户进来时用户目录全部不对。
2)who am i命令不可用,这个问题的原因和上面的一样,都是没有调用login,没有声称/var/log/utmp 和 wtmp
看来不经过login的过程还存在很多问题的
临时解决办法,在/etc/profile.d/目录下添加一个文件,文件名随便起,但后缀必须是.sh,我的是my_walk_around_env.sh

$cat /etc/profile.d/my_walk_around_env.sh
if [ "x$USER" != "xroot" ]
then
        export HOME=/home/$USER
        cd ~
fi

3)bash历史命令出不来,这个很egg pain,找个时间解决下

哪位如果知道怎样做更加优雅,请不吝指教,谢谢!

阅读(4714) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~