RHELでユーザーの名前空間を作成できません。

RHELでユーザーの名前空間を作成できません。

RHEL 7でユーザーの名前空間を作成しようとしましたが、次のエラーで失敗しました。

[root@teja7131 ~]# unshare -U /bin/bash
unshare: unshare failed: Invalid argument

ユーザーの名前空間を生成するための正しいパラメーター形式を説明してください。

答え1

stracecheck コマンドを使用する場合

$ strace -o logf -f unshare -U sh
unshare: unshare failed: Invalid argument
$ grep 'Invalid argument' logf
31728 unshare(CLONE_NEWUSER)            = -1 EINVAL (Invalid argument)
31728 write(2, "Invalid argument\n", 17) = 17

これは、システムコールがunshare(2)失敗したことを示します。CLONE_NEWUSERマニュアルページに表示されないことは注目に値します。これはドキュメントエラーかもしれませんが、CLONE_NEWUSERRedHat 7のデフォルトインストールがそれをサポートしていないことを示します(私はテストシステムでCentos7を使用していますが、これは同様です)がRedHat 7とは異なります。

$ man 2 unshare | col -b | grep CLONE_NEWUSER
$ 

これは奇妙unshareですCLONE_NEWUSERに関する質問unshare(CLONE_NEWUSER)CONFIG_USER_NSCentos 7では明らかに有効になっています。

$ grep CONFIG_USER_NS /boot/config-$(uname -r)
CONFIG_USER_NS=y

しかし、より多くのアルタグーグルアヒルが登場しました。LXCスレッドこれは、「現在のユーザーネームスペースは技術プレビュー状態です」(RedHat 7.2に準拠)なので、機能する場合と機能しない可能性があります。カーネルパラメータを追加しても、user_namespace.enable=1私のCentos 7.5システムでは役に立ちませんでした(そして以下のテストでは必要ありませんでした)。これカーネル関数ページただし、サポートされているユーザーの名前空間はFelipe Brandenburgによって検索されました。ユーザーの名前空間を有効にしても安全ですか?これは、デフォルトではRedHat 7でユーザーに対して0個の名前空間を有効にしますが、この数字は増やすことができることを示しています。

# cat /proc/sys/user/max_user_namespaces
0
# echo 640 > /proc/sys/user/max_user_namespaces
# unshare -U sh
sh-4.2$ 

したがって、max_user_namespacesCentos 7.5では増加が可能で、user_namespace.enable=1カーネルフラグは必要ありません。

追加資料:

https://rhelblog.redhat.com/2015/07/07/whats-next-for-containers-user-namespaces/

関連情報