32.3. 设置 chroot 用户环境

你所做的本质是创建一个骨架根文件系统,其中包含必要的组件,二进制文件、密码文件等,以允许 Unix 在用户登录时执行 chroot。请注意,如果在编译期间使用--enable-ls选项(如上所示),则/home/ftp/bin/home/ftp/lib目录不是必需的,因为这个新选项允许 Wu-ftpd 使用自己的ls功能。我们仍然继续演示旧方法,供那些喜欢复制/bin/ls到 chroot 目录FTP的用户使用,/home/ftp/bin并创建与ls.

FTP chrooted

以下是在 chroot jail 中运行 Wu-ftpd 软件的必要步骤

首先,创建所有必要的 chroot 环境目录,如下所示
        [root@deep ] /# mkdir /home/ftp/dev
        [root@deep ] /# mkdir /home/ftp/etc
        [root@deep ] /# mkdir /home/ftp/bin    (1)
        [root@deep ] /# mkdir /home/ftp/lib    (2)
      

(1)
仅当您未使用--enable-ls选项时才需要。
(2)
仅当您未使用--enable-ls选项

将新目录的权限更改为0511出于安全原因:chmod 命令将使我们的 chrootdev, etc, binlib目录可由超级用户读取和执行root并可由用户组和所有用户执行。
    [root@deep ] /# chmod 0511 /home/ftp/dev/
    [root@deep ] /# chmod 0511 /home/ftp/etc/
    [root@deep ] /# chmod 0511 /home/ftp/bin    (1)
    [root@deep ] /# chmod 0511 /home/ftp/lib    (2)

(1)
仅当您未使用--enable-ls选项时才需要。
(2)
仅当您未使用--enable-ls选项时才需要。

  1. 复制/bin/ls二进制文件到/home/ftp/bin目录并更改ls程序的权限为0111您不希望用户能够修改二进制文件
        [root@deep ] /# cp /bin/ls /home/ftp/bin            (1)
        [root@deep ] /# chmod 0111 /bin/ls /home/ftp/bin/ls (2)
    

    (1)
    仅当您未使用--enable-ls选项时才需要。
    (2)
    仅当您未使用--enable-ls选项时才需要。
    仅当您在配置 Wu-ftpd 时没有使用--enable-ls选项时才需要此步骤。有关更多信息,请参见本章中的编译和优化部分。

  2. 查找lsLinux 二进制程序

    1.             [root@deep ] /# ldd /bin/ls (1)
                

      (1)
      仅当您未使用--enable-ls选项时才需要。
      
                  libc.so.6 => /lib/libc.so.6 (0x00125000)
                  /lib/ld-linux.so.2 =7gt; /lib/ld-linux.so.2 (0x00110000)
                

    2. 的共享库依赖项lib将上面标识的共享库复制到您的新/home/ftp目录下的
                      [root@deep ] /# cp /lib/libc.so.6 /home/ftp/lib/ (1)
                      [root@deep ] /# cp /lib/ld-linux.so.2 /home/ftp/lib/ (2)
                    

      (1)
      仅当您未使用--enable-ls选项
      (2)
      仅当您未使用--enable-ls选项

    3. Caution

      目录ls这些库是使ls工作所必需的。此外,仅当您想使用--enable-lsLinux 二进制程序而不是使用ls选项时才需要上述步骤 3 和 4,该选项使用 Wu-ftpd 的新内部

  3. 功能。创建您的/home/ftp/dev/null
                  [root@deep ] /# mknod /home/ftp/dev/null c 1 3
                  [root@deep ] /# chmod 666 /home/ftp/dev/null
                

  4. 复制文件passwd文件在/home/ftp/etcFTP目录中。这应该与您的真实文件不同。因此,我们将删除除了超级用户root之外的所有非文件.

    1.                 [root@deep ] /# cp /etc/passwd /home/ftp/etc/
                      [root@deep ] /# cp /etc/group /home/ftp/etc/
                    

    2. 用户在这些文件中的条目。编辑文件,vi/home/ftp/etc/passwdroot并删除除超级用户FTP和您允许的用户之外的所有条目。chroot 环境中的
                      root:x:0:0:root:/:/dev/null
                      ftpadmin:x:502:502::/ftpadmin/:/dev/null
                    

    3. 注意: 我们这里可以注意到两点:首先,此修改后的文件中所有用户的 home 目录现在都已更改,以反映新的 chrootFTP目录,/home/ftp/./ftpadmin/开始/ftpadmin/, 并且,root帐户的用户登录 shell 名称已更改为/dev/null.

    4. 用户在这些文件中的条目。文件编辑/home/ftp/etc/group/home/ftp/etc/passwdroot和所有您允许的FTP用户。文件文件应与您的普通组文件对应
                      root:x:0:root
                      ftpadmin:x:502:
                    

  5. 现在,我们必须设置 chroot jail 目录中的文件文件为不可变的,以获得更好的安全性。

    1.                 [root@deep ] /# cd /home/ftp/etc/
                      [root@deep ] /# chattr +i passwd
                    

    2. 文件/home/ftp/dev/null
                      [root@deep ] /# cd /home/ftp/etc/
                      [root@deep ] /# chattr +i group