Debianカーネルでユーザー名前空間を有効にします


28

カーネルでユーザー名前空間機能を有効にする方法を見つけようとしています(CAP_SYS_USER_NSと思います)。Debian Stretch、カーネル4.6.0-1-amd64を使用しています。

私の想定では、ユーザーの名前空間を有効にしてカーネルを再コンパイルする方法があります。数時間検索した後、Ubuntuでこれを行う投稿を見つけることができます(https://blog.tutum.co/2013/12/14/enabling-the-user-namespace-in-ubuntu-13-10-saucy/)が、Debianはそうではありません(問題は間違った方向に進んでいる可能性があるため、私の検索はベースから外れています)。

私の最終目的は、カーネルでユーザー名前空間を有効にする必要があると思われるDockerとGoogleサンドボックスに追いつくためにこれらを有効にすることです(たとえば、Chromeコンテナーは機能しなくなります)。


1
同じ質問も参照してください:unix.stackexchange.com/q/303213/4319
imz-Ivan Zakharyaschev

回答:


38

Debianでは、usernsはコンパイルされていますが、デフォルトでは無効になっています。このsysctlノブを追加するDebian固有のパッチがカーネルにあります: kernel.unprivileged_userns_clone

そのため、新しいエントリを追加/etc/sysctl.dして1に設定する必要があります

手動でそれは次のようになります:(echo 1 > /proc/sys/kernel/unprivileged_userns_clone再起動するまで有効にするだけです)

永続的なソリューションの場合:

echo 'kernel.unprivileged_userns_clone=1' > /etc/sysctl.d/00-local-userns.conf
service procps restart

同等のブートオプションパラメータがある可能性があります、私は知りません


1
これは、Stretchカーネルで引き続き機能します4.9.0-1-amd64 #1 SMP Debian 4.9.6-3 (2017-01-28) x86_64 GNU/Linux
リード

1
Debianでデフォルトで無効にされている理由はありますか?
メルロイ

2
歴史的に、ユーザー名前空間のセキュリティは不確かでした。例えば:lwn.net/Articles/673597。ユーザーが自分の名前空間内のルートとして、カーネルをだまして実際のホストでの操作を許可できる場合、特権の昇格があります。通常の非ユーザー名前空間には、明示的なルート(管理者)権限が必要であるため、管理者が選択したものを実行します。これは既知のリスクです。後のメカニズムがバニラカーネルに追加されました:user.max_user_namespaces。0に設定すると、ユーザー名前空間が無効になります。Debian(実際にはUbuntuから)パッチは、おそらく廃止されたとしても、まだ存在しています。たぶん、互換性の理由のために
AB

1
カーネル4.18.3はまだDebianでリリースされていないため、お使いのカーネルはDebianテストのカーネルではありません。このパラメータを完全に無視できます(Debianから実際のカーネルをインストールするまで)。user.max_user_namespacesに関する以前のコメントも参照してください
AB

3
それとも単に:sudo sysctl -w kernel.unprivileged_userns_clone=1
スキッピールグラングロウ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.