chroot

在设定的虚拟根目录中运行命令


语法格式

chroot [--userspec=user:group] [--groups=grouplist] newroot [cmd [args]]
chroot [--help] [--version]

命令简介

chroot命令的主要目的是改换根目录,在新设定的虚拟根目录中运行指定的命令或交互Shell。通常,文件名(包括命令)是从根目录开始检索的,chroot命令把根目录改为指定的目录newroot,然后运行指定的命令cmd,如果需要,提供命令参数args

其中,newroot必须是一个真实存在的目录,cmd可以是任何命令,如果未指定命令,运行SHELL变量定义的Shell,如果SHELL变量未定义,运行/bin/sh命令,使用“-i”作为命令选项。args是选用的命令参数,如“-i”选项。至于是否需要指定命令参数,视运行的命令而定。

命令选项

--userspec=user:group  指定使用的用户和用户组身份(ID或名字均可)运行命令。通常,提交的命令是以当前用户的身份运行的,使用这个选项可以利用指定的用户身份运行命令。

--groups=grouplist  指定用户分属的其他用户组(即从属用户组),表示以指定的从属用户组成员的身份运行指定的命令。指定的从属用户组可以是一个或多用户组,ID或名字均可。多个用户组之间需加逗号“,”分隔符,如g1,g2,..,gN等。

应用实例

1. 当引导程序出现问题导致系统无法正常启动时,或忘记超级用户密码无法维护系统时,通常需要利用系统安装或维护光盘重新启动系统,选择、进入系统维护模式。例如,在Red Hat Linux系统的情况下,选择“Rescue installed system”,进入系统维护模式。系统维护环境是利用系统光盘启动的一个临时系统,如果需要修改系统的/etc/passwd/etc/shadow文件,或者重装GRUB引导程序,需要进入/dev/sda磁盘中的根目录(即“/”文件系统分区),在Red Hat Linux系统维护模式中,“/”文件系统已安装在/mnt/sysimage目录下。因此,若想进入/dev/sda系统盘中的“/”文件系统根目录,需要运行下列命令:

# chroot /mnt/sysimage
#

此后,凡是运行的命令及访问的文件都是基于新的根目录的。例如,修改的/etc/passwd和/etc/shadow文件都是位于/dev/sda磁盘“/”文件系统分区中的文件,而非系统维护环境。在重新安装GRUB引导程序时也会找到/dev/sda系统盘的主引导记录。


索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z