为什么 `chroot` 操作会导致错误:“bash: /root/.bashrc: Permission returned”?

为什么 `chroot` 操作会导致错误:“bash: /root/.bashrc: Permission returned”?

为什么chroot运行会出现错误:“ bash: /root/.bashrc: Permission denied”?

我一直在chroot出于学习目的进行测试,并在执行时遇到以下错误/bin/bash

nlykkei@debian:~$ id
uid=1000(nlykkei) gid=1000(nlykkei) groups=1000(nlykkei),27(sudo)
nlykkei@debian:~$ sudo chroot --userspec nlykkei:root --groups sudo / /bin/bash
bash: /root/.bashrc: Permission denied
nlykkei@debian:/$ id
uid=1000(nlykkei) gid=0(root) groups=0(root),27(sudo)

似乎/bin/bash正在尝试访问 root.bashrc而不是nlykkeis?

此外,我无法通过创建(复制)NEWROOT来制作~和执行:/bin/bash~/bin/bash

nlykkei@debian:~$ ls -la ~/bin/bash
-rwxr-xr-x 1 nlykkei nlykkei 1168776 Sep 23 10:49 /home/nlykkei/bin/bash
nlykkei@debian:~$ sudo chroot --userspec nlykkei:root --groups sudo /home/nlykkei/ /bin/bash
chroot: failed to run command ‘/bin/bash’: No such file or directory

有什么办法可以解决这些问题吗?

nlykkei@debian:~$ uname -a
Linux debian 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5 (2019-06-19) x86_64 GNU/Linux

答案1

传递--userspec到与在 chroot 环境中chroot运行不同;su - user即主目录仍然是 root ie 的目录,/root这就是为什么bash要尝试读取/root/.bashrc非 root 用户不允许的内容。

您的第二个问题可能是由于没有在 chroot 环境中包含所有必需的共享库。从chroot信息文件:

如果您想使用动态链接的可执行文件,例如“bash”,那么首先运行“ldd bash”以查看它需要哪些共享对象。然后,除了复制实际的二进制文件之外,还将列出的文件复制到您想要的新根目录下的所需位置。最后,如果可执行文件需要任何其他文件(例如数据、状态、设备文件),也将它们复制到位。

相关内容