chroot命令在Linux/Unix系统下用于修改根目录。像系统一样,Linux/Unix中的每个进程/命令都有一个当前工作目录,称为根目录。它更改当前运行的进程及其子进程的根目录。
在这样一个修改过的环境中运行的进程/命令不能访问根目录之外的文件。这种修改后的环境被称为"chroot jail"或"jailed directory"。允许某些root用户和特权进程使用chroot命令。
" chroot"命令可能非常有用:
- 创建一个测试环境。
- 恢复系统或密码。
- 重新安装引导程序。
语法如下:
chroot /path/to/new/root command
OR
chroot /path/to/new/root /path/to/server
OR
chroot [options] /path/to/new/root /path/to/server
选项:
- –userspec = USER:GROUP:此选项描述了要使用的用户和组。名称或数字ID均可用于指定用户和组。
- –groups = G_LIST:将补充组描述为g1, g2, .., gN。
- -help :显示帮助消息, 然后退出。
- –version:提供版本信息, 然后退出。
例子:
第1步:我们将仅使用bash和基本命令创建一个 mini-jail 。让我们在" 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
步骤4:使用ldd命令打印共享库:
$ ldd /bin/bash
步骤5:使用cp命令将所需的库复制到$ HOME/jail/lib64 /位置:cp -v library/displayed/by/above/command $ HOME/jail/lib64同样, 将ls命令的库复制到$ HOME/jail/lib64位置。
步骤6:最后, 将chroot放入你的mini-jail中:$ sudo chroot $ HOME/jail/bin/bash现在, 用户将$ HOME/jail目录作为其根目录。这极大地提高了安全性。