web-dev-qa-db-ja.com

`chroot`操作でエラーが発生するのはなぜですか:" bash:/root/.bashrc:Permissiondenied "?

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/bashnlykkeiではなく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
2
Shuzheng

--userspecchrootに渡すことは、chroot環境内でsu - userを実行することと同じではありません。つまり、ホームディレクトリはまだルートのディレクトリです。つまり、/rootです。そのため、bashはルート以外のユーザーには許可されていない/root/.bashrcを読み取ろうとしています。

2番目の問題は、chroot環境に必要なすべての共有ライブラリが含まれていないことが原因である可能性があります。 chroot情報ドキュメントから:

「bash」などの動的にリンクされた実行可能ファイルを使用する場合は、最初に「ldd bash」を実行して、必要な共有オブジェクトを確認します。次に、実際のバイナリをコピーするだけでなく、リストされているファイルを目的の新しいルートディレクトリの下の必要な位置にコピーします。最後に、実行可能ファイルに他のファイル(データ、状態、デバイスファイルなど)が必要な場合は、それらも所定の場所にコピーします。

2
wurtel