#Bash 的 chroot 命令
chroot [OPTION] NEWROOT [COMMAND [ARG]...]
功能
执行命令时指定根路径。
类型
可执行文件(/usr/sbin/chroot),属于 coreutils。
参数
OPTION选项:--groups=G_LIST- 以列表(g1,g2,...,gn)的格式补充组--userspec=USER:GROUP- 指定用户和组--skip-chdir- 不更改工作目录--help- 显示帮助--version- 显示版本
NEWROOT要作为根路径的路径COMMAND要执行的命令;如果不指定此参数,则切换后运行当前 shell 程序ARG命令的参数列表
返回值
- 125 -
chroot自身失败 - 126 -
COMMAND无法运行 - 127 -
COMMAND不存在 - 其它情况返回
COMMAND的返回值
#示例
$ ls /tmp/ # 查看 /tmp 目录
tmp.XG4RL3jbgF tmp.Urtrw97emL tmp.M8ln2SXW4p
$ mkdir -p ./fake_root/tmp # 创建目录
$ touch ./fake_root/tmp/1.txt # 创建文件
$ wget https://busybox.net/downloads/binaries/1.35.0-x86_64-linux-musl/busybox -O ./fake_root/busybox
$ sudo chroot ./fake_root/ ./busybox ls /tmp/ # 指定 ./fake_root/ 为根目录,查看 /tmp 目录
1.txt
因为将根目录设为
./fake_root/之后,没有/bin目录下的各种命令,因此下载了busybox来执行ls命令。
#推荐阅读
#手册
CHROOT(8) User Commands CHROOT(8) NAME chroot - run command or interactive shell with special root directory SYNOPSIS chroot [OPTION] NEWROOT [COMMAND [ARG]...] chroot OPTION DESCRIPTION Run COMMAND with root directory set to NEWROOT. --groups=G_LIST specify supplementary groups as g1,g2,..,gN --userspec=USER:GROUP specify user and group (ID or name) to use --skip-chdir do not change working directory to '/' --help display this help and exit --version output version information and exit If no command is given, run '"$SHELL" -i' (default: '/bin/sh -i'). Exit status: 125 if the chroot command itself fails 126 if COMMAND is found but cannot be invoked 127 if COMMAND cannot be found - the exit status of COMMAND otherwise AUTHOR Written by Roland McGrath. REPORTING BUGS GNU coreutils online help: <https://www.gnu.org/software/coreutils/> Report any translation bugs to <https://translationproject.org/team/> COPYRIGHT Copyright © 2023 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. SEE ALSO chroot(2) Full documentation <https://www.gnu.org/software/coreutils/chroot> or available locally via: info '(coreutils) chroot invocation' GNU coreutils 9.4 April 2024 CHROOT(8)