# chroot /mnt/sys1 /bin/bash
chroot: failed to run command '/bin/bash': No such file or directory
chroot: failed with No such file or directory
しかし、ファイルがそこにあるので、これは一般的な問題ではありません。
/mnt/sys1# dir -l bin/bash
-rwxr-xr-x 1 root root 1234376 2022-03-27 14:40 bin/bash*
/mnt/sys1# dir -l
lrwxrwxrwx 1 root root 7 2021-05-08 14:27 bin -> usr/bin/
lrwxrwxrwx 1 root root 7 2021-05-08 14:27 lib -> usr/lib/
lrwxrwxrwx 1 root root 9 2021-05-08 14:27 lib32 -> usr/lib32/
lrwxrwxrwx 1 root root 9 2021-05-08 14:27 lib64 -> usr/lib64/
lrwxrwxrwx 1 root root 10 2021-05-08 14:27 libx32 -> usr/libx32/
/mnt/sys1# dir -ld usr/lib*
drwxr-xr-x 78 root root 4096 2023-04-08 23:48 usr/lib/
drwxr-xr-x 2 root root 4096 2023-04-08 18:35 usr/lib32/
drwxr-xr-x 2 root root 4096 2023-04-08 18:35 usr/lib64/
drwxr-xr-x 4 root root 4096 2023-04-08 18:37 usr/libexec/
drwxr-xr-x 2 root root 4096 2023-04-08 18:35 usr/libx32/
/mnt/sys1# dir -l usr/bin/bash
-rwxr-xr-x 1 root root 1234376 2022-03-27 14:40 usr/bin/bash*
/mnt/sys1# file /bin/bash bin/bash
/bin/bash: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=31c321f9f0c1f86a379f7efaaeb75f707998f27f, for GNU/Linux 3.2.0, stripped
bin/bash: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=31c321f9f0c1f86a379f7efaaeb75f707998f27f, for GNU/Linux 3.2.0, stripped
/mnt/sys1# cmp /bin/bash bin/bash && echo same
same
欠落している可能性がある依存関係とは異なり、ldd
開始する前に失敗します。
# strace -o /tmp/strace.log chroot /mnt/sys1 /bin/bash
chroot: failed to run command '/bin/bash': No such file or directory
# cat /tmp/strace.log
. . .
lstat("/mnt", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/mnt/sys1", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0
chroot("/mnt/sys1") = 0
chdir("/") = 0
execve("/bin/bash", ["/bin/bash"], 0x7ffee9b47ff8 /* 121 vars */) = -1 ENOENT (No such file or directory)
write(2, "chroot: ", 8) = 8
write(2, "failed to run command '/bin/bash"..., 33) = 33
write(2, ": No such file or directory", 27) = 27
. . .
IEが存在しないとexecve
文句を言います。/bin/bash
しかし、これは正しいそこに!
どんなアイデアがありますか?
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye
ベストアンサー1
chroot
rootユーザーとしてのみ実行できます。
残念ながら、(少なくともDebianでは)man chroot
これについての言及はありません。公式オンライン文書、
chroot
指定されたルートディレクトリを使用してコマンドを実行します。多くのシステムでは、スーパーユーザーだけがこれを実行できます。