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/

관련 정보