29.18. Apache 使用共享库

由于我们已编译 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/
      

  1. 现在我们需要将 passwd 和 group 文件复制到/chroot/httpd/etcchroot 目录中。这里的概念与 ftpd 如何使用 passwd 和 group 文件相同。接下来,我们将删除除 Apache 运行用户之外的所有条目,在以下两个文件中passwdgroup.

    1.               [root@deep ]/# cp /etc/passwd /chroot/httpd/etc/
                    [root@deep ]/# cp /etc/group /chroot/httpd/etc/
                  

    2. 编辑passwd文件,vi/chroot/httpd/etc/passwd并删除除 Apache 运行用户之外的所有条目,在我们的配置中,它是www:
                    www:x:80:80::/home/www:/bin/bash
                  

    3. 编辑group文件,vi/chroot/httpd/etc/group并删除除 Apache 运行组之外的所有条目,在我们的配置中,它是www:
                    www:x:80: