ROOT# cd /www
ROOT# mkdir -p usr/bin usr/lib lib etc tmp dev webhome
ROOT# ln -s usr/bin bin
2.3 /tmp是假定的专用perms
ROOT# chmod 777 tmp
ROOT# chmod +t tmp
2.4 构造特殊的装置 dev/null
ROOT# mknod -m 666 dev/null c 1 3
2.5 为你自己的时区设定时区信息(这里使用的是MET)
ROOT# mkdir -p usr/share/zoneinfo
ROOT# cp -pi /usr/share/zoneinfo/MET usr/share/zoneinfo/
ROOT# cd etc
ROOT# ln -s ../usr/share/zoneinfo/MET localtime
ROOT# cd ..
2.6 你会发现由于缺乏本地设置,perl和mod-perl多有不便,但你可以通过在实现了虚拟根环境目录树中安装本地文件来克服它:
ROOT# set |grep LANG
LANG=en_US
ROOT# mkdir /www/usr/share/locale
ROOT# cp -a /usr/share/locale/en_US /www/usr/share/locale/
2.7 现在,在可以提供非常基础的虚拟根环境化的文件系统的共享库
ROOT# cp -pi /lib/libtermcap.so.2 /lib/ld-linux.so.2 /lib/libc.so.6 lib/
2.8 测试你的目录树(Apachect1后面将要用到“cat”,但也不是必需的)
ROOT# cp -pi /bin/ls /bin/sh /bin/cat bin/
ROOT# chroot /www /bin/ls -l /
lrwxrwxrwx 1 00 7 Jan 29 09:24 bin -> usr/bin
drwxr-xr-x 2 001024 Jan 29 09:28 dev
drwxr-xr-x 2 003072 Jan 29 13:17 etc
drwxr-xr-x 2 001024 Jan 29 13:12 lib
drwxrwxrwt 2 001024 Jan 29 09:23 tmp
drwxr-xr-x 5 001024 Jan 29 09:23 usr
drwxr-xr-x 2 001024 Jan 29 10:41 webhome
2.9 你可以移动一下ls,它只是用于测试的。
ROOT# rm bin/ls
3.准备一个用户和名字服务器
下面我们生成一个运行Apache的用户,下面是这种配置的必要的命名服务:
3.1 生成一个不存在于系统上的新的用户,给他起一个特殊的名字和用户ID(例如888)。
注意:对于存在真正的鉴定文件(/etc/passwd /etc/group)的user.group,这并不是必需的,完全有你决定:
ROOT# cd /www
ROOT# touch etc/passwd etc/group etc/shadow
ROOT# chmod 400 etc/shadow
3.2 编辑三个文件,在这个例子中,我只是将数据再传回文件中:
ROOT# echo 'www:x:888:888:Web Account:/webhome:/usr/bin/False' > etc/passwd
ROOT# echo 'www:x:888:' > etc/group
ROOT# echo 'www:*:10882:-1:99999:-1:-1:-1:134537804' > etc/shadow
3.3 我没有给这个用户login或shell,只是为了完整,编译了一下称为false的no-go shell。
ROOT# echo 'int main(int argc, char *argv[]) { return(1); }' > /tmp/False.c
ROOT# cc -o /www/usr/bin/False /tmp/False.c
3.4 下面让我们标记一下二进制流:
ROOT# chmod 111 usr/bin/*
3.5 一些命名服务是必须的。但是由于glibc和命名服务转换库的存在,那些库是必不可少不是那么一目了然的。至于其中的细节,你可以使用命令“man nsswitch”来察看。尽管在我的机器上运行着网络信息服务(NIS),但我还是选择依赖于文件和域名服务(DNS)。注意:libresolve库也是必需的,在安装了PHP之后,这种需求就相当明显了。
ROOT# cp -pi /lib/libnss_files.so.2 lib/
ROOT# cp -pi /lib/libnss_dns.so.2 lib/
3.6 我们将需要三个文件来完成对命名服务的配置。
这些文件的内容决定于你IP和DNS设置。在这里我们假定web服务器的名字是ns.mynet.home,它的IP地址是:192.168.196.2(实际上它也是我的名字服务器)
# ---- Contents ofetc/nsswitch.conf ----#
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 虚拟 环境 建立 ROOT# 安装 文件 目录 Apache 一个 cd |
注册
个人空间
