RHEL 7でユーザー名前空間を作成しようとしていますが、以下のエラーのために作成できません。
[root@teja7131 ~]# unshare -U /bin/bash
unshare: unshare failed: Invalid argument
ユーザー名前空間を作成するための正しい引数形式を説明してください。
strace
を使用してコマンドを検査する場合
_$ 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
_はマニュアルページに表示されません。これはドキュメントのバグであるか、RedHat 7のストックインストールで_CLONE_NEWUSER
_がサポートされていないことを示している可能性があります(ここではテストシステムでCentos7を使用しています) 、RedHat 7)と似ていますが、異なります。
_$ man 2 unshare | col -b | grep CLONE_NEWUSER
$
_
これは奇妙です; altagoobingleduckgoing用語unshare
および_CLONE_NEWUSER
_は unshare(CLONE_NEWUSER)
に関する質問を生成しますが、それから_CONFIG_USER_NS
_はCentos7で明らかに有効になっています。
_$ grep CONFIG_USER_NS /boot/config-$(uname -r)
CONFIG_USER_NS=y
_
さらにaltagoobingleduckgoingは lxc thread を表示し、「現在ユーザーの名前空間はTECH PREVIEWフェーズにある」(RedHat 7.2以降)ため、機能する場合と機能しない場合があります。カーネル引数に_user_namespace.enable=1
_を追加しても、Centos 7.5システムでは役に立ちませんでした(以下のテストでは必要ありません)。 カーネル機能ページ ただし、サポートされているユーザー名前空間が一覧表示されます。 Filipe Brandenburgerが見つかりました ユーザー名前空間を有効にしても安全ですか これは、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$
_
したがって、Centos 7.5で_max_user_namespaces
_を増やすことは機能し、_user_namespace.enable=1
_カーネルフラグを必要としません。
さらに読む:
https://rhelblog.redhat.com/2015/07/07/whats-next-for-containers-user-namespaces/