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目录视为其根目录。这是对安全性的极大提升。