chroot Jailを使用してuname -nの結果を変更する

chroot Jailを使用してuname -nの結果を変更する

ちょうどchroot刑務所が何であるかを学んだので、この質問があまり理解できない場合はご了承ください。

デフォルトでは、私のコンピュータでローカルに実行される2つのプロセスがあり、「uname -n」の結果が各プロセス(およびすべての子プロセス)で異なることを望みます。これを行うためにchroot刑務所をどのように使用できますか?

ベストアンサー1

chrootではこれを行うことはできません。しかし、変更すればそうすることができます。UTS名前空間、例えば、共有をキャンセル

mysystem# unshare --uts sh -c 'hostname test; uname -n'; uname -n
test
mysystem

同様に、対話的に:

最初の端末:

mysystem# unshare --uts bash
mysystem# hostname test
mysystem# exec bash # to refresh prompt
test# uname -n
test
test# strace uname -n 2>&1|tail
brk(NULL)                               = 0x5592a93f6000
brk(0x5592a9417000)                     = 0x5592a9417000
uname({sysname="Linux", nodename="test", ...}) = 0
fstat(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
write(1, "test\n", 5test
)                   = 5
close(1)                                = 0
close(2)                                = 0
exit_group(0)                           = ?
+++ exited with 0 +++
test# 

2番目の端末、影響を受けません:

mysystem# uname -n
mysystem
mysystem# 

最初の端末でシェルを終了し、名前空間が変更されていない呼び出し端末に戻ります。

test# exit
mysystem# 

気づくただホスト名が変更されます。似たようなものがある名前空間さまざまな機能(ネットワーク、マウントポイント...)に使用されます。これがコンテナの礎石です。すべてのコンテナが使用されます(コンテナのもう1つの主要な礎石は次のとおりです)。cgroup)。

おすすめ記事