由于我们已编译 Apache 以使用共享库,我们需要将它们安装到 chroot 目录结构中。使用 ldd/chroot/httpd/usr/sbin/httpd以找出需要哪些库。输出结果取决于您编译 Apache 时使用的选项,将类似于以下内容:
libpam.so.0 =>/lib/libpam.so.0 (0x40016000) libm.so.6 =>/lib/libm.so.6 (0x4001f000) libdl.so.2 =>/lib/libdl.so.2 (0x4003b000) libcrypt.so.1 =>/lib/libcrypt.so.1 (0x4003e000) libnsl.so.1 =>/lib/libnsl.so.1 (0x4006b000) libresolv.so.2 =>/lib/libresolv.so.2 (0x40081000) libdb.so.3 =>/lib/libdb.so.3 (0x40090000) libc.so.6 =>/lib/libc.so.6 (0x400cb000) /lib/ld-linux.so.2 =>/lib/ld-linux.so.2 (0x40000000) |
复制上面标识的共享库
[root@deep ]/# cp /lib/libpam.so.0 /chroot/httpd/lib/ [root@deep ]/# cp /lib/libm.so.6 /chroot/httpd/lib/ [root@deep ]/# cp /lib/libdl.so.2 /chroot/httpd/lib/ [root@deep ]/# cp /lib/libcrypt.so.1 /chroot/httpd/lib/ [root@deep ]/# cp /lib/libnsl* /chroot/httpd/lib/ [root@deep ]/# cp /lib/libresolv* /chroot/httpd/lib/ [root@deep ]/# cp /lib/libdb.so.3 /chroot/httpd/lib/ [root@deep ]/# cp /lib/libc.so.6 /chroot/httpd/lib/ [root@deep ]/# cp /lib/ld-linux.so.2 /chroot/httpd/lib/ |
您还需要以下额外的库用于某些网络功能,例如解析
[root@deep ]/# cp /lib/libnss_compat* /chroot/httpd/lib/ [root@deep ]/# cp /lib/libnss_dns* /chroot/httpd/lib/ [root@deep ]/# cp /lib/libnss_files* /chroot/httpd/lib/ |
现在我们需要将 passwd 和 group 文件复制到/chroot/httpd/etcchroot 目录中。这里的概念与 ftpd 如何使用 passwd 和 group 文件相同。接下来,我们将删除除 Apache 运行用户之外的所有条目,在以下两个文件中passwd和group.
[root@deep ]/# cp /etc/passwd /chroot/httpd/etc/ [root@deep ]/# cp /etc/group /chroot/httpd/etc/ |
编辑passwd文件,vi/chroot/httpd/etc/passwd并删除除 Apache 运行用户之外的所有条目,在我们的配置中,它是www:
www:x:80:80::/home/www:/bin/bash |
编辑group文件,vi/chroot/httpd/etc/group并删除除 Apache 运行组之外的所有条目,在我们的配置中,它是www:
www:x:80: |