chroot 命令

用途

更改命令的根目录。

语法

chroot Directory 命令

描述

注:如果新根目录中的特殊文件具有与实际根目录不同的主要和次要设备号,那么可能会覆盖文件系统。

只有具有 root 用户权限的用户才可以使用 chroot 命令。 如果具有 root 用户权限,那么 chroot 命令将根目录更改到当执行 CommandDirectory 参数指定的目录。 任何路径名中的第一个 /(斜杠)更改为指定 Command 及其子命令的 Directory

Directory 路径名始终相对于当前根目录。 即使 chroot 命令生效,Directory 路径名相对于运行进程的当前根目录。

chroot 命令运行后,大多数程序可能不能正常运行。 例如,如果共享库不在新的根文件系统中,那么使用共享库的命令将失败。 最常用的共享库是 /usr/ccs/lib/libc.a 库。

如果当前根目录下的/etc/passwd文件无法访问,ls-l命令就无法成功提供用户名和组名。 此外,如果文件(/usr/lib/nls/*)不在新的根文件系统中,取决于这些本地化文件的实用程序也可能会失败。 您的职责是确保所有重要的数据文件都在新的根文件系统中,并确保已更改访问此类文件的必要路径名。
注: 确保 /usr/sbin/execerror 命令在新的根文件系统上可用,以便在发生 chroot 故障时返回描述性错误消息。 否则,如果发生错误,那么 chroot 将返回 Killed ,而不会返回更多内容。

参数

描述
命令 指定命令以使用 chroot 命令运行。
目录 指定新的根目录。

安全性

RBAC 用户注意: 此命令可以执行特权操作。 只有特权用户才能执行特权限定的操作。 有关权限与特权的更多信息,请参阅安全性中的“特权限定的命令数据库”。 有关与该命令相关联的特权和权限的列表,请参阅 lssecattr 命令或 getcmdattr 子命令。

示例

注:以下示例中的命令可能取决于共享库。 在运行 chroot 命令之前,请确保共享库在新的根文件系统中。

  1. 要运行 pwd 命令将 /usr/bin 目录作为根文件系统,请输入:
    mkdir /usr/bin/lib
     
    cp /usr/ccs/lib/libc.a /usr/bin/lib
    
    cp /usr/lib/libcrypt.a /usr/bin/lib
     
    chroot /usr/bin pwd
  2. 要运行 Korn shell 程序的子 shell 程序并将另一个系统文件作为根文件系统,请输入:
    chroot /var/tmp /usr/bin/ksh
    这使得目录名/(斜杠) 引用/var/tmp期间/usr/bin/ksh指令返回给FTP客户的IP地址。 它还使得原始的根文件系统不可访问。 文件系统/var/tmp文件必须包含根文件系统的标准目录。 特别是, shell 在/bin/usr/bin文件/var/tmp文件系统。

    运行/usr/bin/ksh命令将创建一个子 shell ,该子 shell 作为独立于原始 shell 的进程运行。 按下 END OF FILE(Ctrl-d)键控顺序以结束子 shell 程序并返回到您在原始 shell 中的位置。 这恢复原始 shell 的环境,包括 . (当前目录)和 /(根目录)的意义。

  3. 要创建与原始 root 相关的文件,而非新文件,请输入:
    chroot directory Command > file

文件

描述
/etc/passwd 指定包含基本用户属性的文件。
/usr/ccs/lib/libc.a 指定标准 I/O 库和标准 C 库。
/usr/ccs/lib/libcurses.a 指定 curses 库。
/usr/lib/liblvm.a 指定 LVM(逻辑卷管理器)库。
/usr/ccs/lib/libm.a 指定 math 库。
/usr/lib/libodm.a 指定 ODM(对象数据管理器)库。
/usr/sbin/chroot 包含 chroot 命令。