📜  Linux 中的 chroot 命令和示例

📅  最后修改于: 2022-05-13 01:57:29.101000             🧑  作者: Mango

Linux 中的 chroot 命令和示例

Linux/Unix 系统中的chroot 命令用于更改根目录。 Linux/Unix 类系统中的每个进程/命令都有一个名为root directory的当前工作目录。它更改当前正在运行的进程及其子进程的根目录。
在这种修改过的环境中运行的进程/命令无法访问根目录之外的文件。这个修改后的环境被称为“chroot jail”或“jailed directory” 。允许某些 root 用户和特权进程使用 chroot 命令。

“chroot”命令非常有用:

  • 创建测试环境。
  • 恢复系统或密码。
  • 重新安装引导加载程序。

句法:

chroot /path/to/new/root command

或者



chroot /path/to/new/root /path/to/server

或者

chroot [options] /path/to/new/root /path/to/server

选项:

  • –userspec=USER:GROUP :此选项描述要使用的用户和组。名称或数字 ID 均可用于指定用户和组。
  • –groups=G_LIST :它将补充组描述为 g1,g2,..,gN。
  • –help :显示帮助信息,然后退出。
  • –version :提供版本信息,然后退出。

例子:

  • 第 1 步:我们将创建一个仅包含 bash 和基本命令的迷你监狱。让我们在“home”目录中创建一个“jail”目录,这将是我们的新根目录。
    $ mkdir $HOME/jail
  • 第 2 步:在“$HOME/jail”中创建目录:
    $ mkdir -p $HOME/jail/{bin, lib64}
    $ cd $HOME/jail
    
  • 第 3 步:使用 cp 命令将/bin/bash/bin/ls复制到$HOME/jail/bin/ 位置:
    $ cp -v /bin/{bash, ls} $HOME/jail/bin
  • 第四步:使用ldd命令打印共享库:
    $ ldd /bin/bash

  • 第 5 步:使用 cp 命令将所需的库复制到$HOME/jail/lib64/ 位置:
    cp -v libraries/displayed/by/above/command $HOME/jail/lib64

    同样,将 ls命令的库复制到 $HOME/jail/lib64位置。

  • 第 6 步:最后,chroot 进入你的迷你监狱:
    $ sudo chroot $HOME/jail /bin/bash

    现在用户将$HOME/jail目录视为其根目录。这是对安全性的极大提升。