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
がnlykkei
ではなくrootの.bashrc
にアクセスしようとしているようです。
さらに、私は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
を読み取ろうとしています。
2番目の問題は、chroot環境に必要なすべての共有ライブラリが含まれていないことが原因である可能性があります。 chroot
情報ドキュメントから:
「bash」などの動的にリンクされた実行可能ファイルを使用する場合は、最初に「ldd bash」を実行して、必要な共有オブジェクトを確認します。次に、実際のバイナリをコピーするだけでなく、リストされているファイルを目的の新しいルートディレクトリの下の必要な位置にコピーします。最後に、実行可能ファイルに他のファイル(データ、状態、デバイスファイルなど)が必要な場合は、それらも所定の場所にコピーします。