私は刑務所に初めて来ましたchroot
。これまでbashを使って設定しました。このチュートリアルssh
、公開鍵で保護されたユーザーからログインできました。
SSH設定はchroot Jailの実行を担当します。
AllowUsers <username>
Match User <username>
ChrootDirectory "/home/<username>"
/etc/sshd_config
デフォルトでは、リストされているすべての依存関係をインポートして実行可能ファイルにコピーし、実行可能/home/username/<rest-of-the-path-to-dependency-file>
ファイルにも同じことをしました。
私はlinux-vdso
何もしなかった同じルールに従わない。
刑務所で私ができる唯一のことは、cd
プログラムを実行することだけです。私のシェルプロンプトは次のとおりです。
-bash-4.4$
別のプログラムを追加し、ldd
上記のチュートリアルと同じ方法で依存関係を追加し、実行可能ファイルをIUが見つけたディレクトリにコピーしました。
/.config/taskell/config.ini
プログラムを実行すると、さまざまなファイルと一緒にディレクトリとフォルダが作成されます。
しかし、プログラムが実行されると、私にエンコーディング関連エラーfile/home/username/.config/taskell/config.ini: hGetContents: invalid argument (invalid byte sequence)
ですが、私のコンピュータのbashシェルから直接実行すると正常に動作します。
chroot刑務所を設定すると、シェルやプログラムが読んでいるファイルを解釈する方法が変わりますか?プロンプト-bash-4.4$
は、通常のプロンプトを使用して最初にログインしたときに存在しなかった一種のデフォルト設定があることを示すようです。
また、WSL Ubuntu 18.08でこれを実行しようとしていますが、これは私がリンクしたエンコーディングの問題に関連しているようです。
私が実行できる唯一の3つのコマンドは、実行したいコマンド、およびgit
ですvim
。しかし、このコマンドで始めるのは幸運ではありません。
答え1
dockerのようなchrootの代わりにコンテナを使用してください(他にもたくさんあります)。
- chroot、名前空間の分離、cgroupなど、はるかに多くの作業を行います。
- それはあなたのためにそれを管理します。
- Dockerの場合、事前にビルドされたイメージがあります。
しかし、あなたが必要とするものはわかりますが、単純なユーザー分離(各ユーザーごとに別々のアカウント)を使用すると、より簡単に解決できます。その後、Application Armorなどの必須アクセス制御を使用してこれを改善できます。
ただし、WSLを使用すると、これらすべてが複雑になります。 WSLはMS-WindowsのGnu/Linuxです。 WSLはGnu / LinuxをLinuxに置き換えます。 WSL2がはるかに良いかどうかはわかりません。私たちが議論していることはすべてGnu / LinuxのLinux部分内で行われます。共有ファイルシステムは、非互換性の大きな領域です。ユーザーを隔離するためにファイル権限を使用することは困難です。
dockerがMS-Windowsで動作していると聞きましたが、Gnu / Linuxを仮想マシンに入れて動作するようです(しかし確かではありません)。