無法在 RHEL 中創建使用者命名空間
我正在嘗試在 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
的是沒有出現在手冊頁中,這可能是文件錯誤或可能表明CLONE_NEWUSER
RedHat 7 的股票安裝不支持(我在測試系統上使用 Centos7,這與 RedHat 7 相似但不同)。$ man 2 unshare | col -b | grep CLONE_NEWUSER $
這很奇怪; altagoobingleduckgoing the terms
unshare
andCLONE_NEWUSER
yield questions aboutunshare(CLONE_NEWUSER)
thatCONFIG_USER_NS
雖然顯然在 Centos 7 上啟用了 altagoobingleduck:$ grep CONFIG_USER_NS /boot/config-$(uname -r) CONFIG_USER_NS=y
然而,更多的 altagoobingleduckgoing 出現了一個lxc 執行緒,該執行緒指示“目前使用者命名空間處於 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$
所以
max_user_namespaces
在 Centos 7.5 上增加是可行的,並且不需要user_namespace.enable=1
核心標誌。更多閱讀:
https://rhelblog.redhat.com/2015/07/07/whats-next-for-containers-user-namespaces/