Bash

為什麼 chroot 操作會導致錯誤:“bash: /root/.bashrc: Permission denied”?

  • September 23, 2019

為什麼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而不是nlykkei‘s?

此外,我不能通過創建(複製)來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

傳遞給與--userspec在chroot 環境chroot中執行是不一樣的;su - user即主目錄仍然是根目錄,/root這就是為什麼bash嘗試讀取/root/.bashrc非根使用者不允許的內容。

您的第二個問題可能是由於沒有在 chroot 環境中包含所有必需的共享庫。從chroot資訊文件:

如果您想使用動態連結的執行檔,例如“bash”,則首先執行“ldd bash”以查看它需要哪些共享對象。然後,除了複製實際的二進製文件外,還將列出的文件複製到您想要的新根目錄下的所需位置。最後,如果執行檔需要任何其他文件(例如,數據、狀態、設備文件),也將它們複製到位。

引用自:https://unix.stackexchange.com/questions/543174