컴파일하지 않고 Linux에서 네임스페이스를 비활성화합니다.

컴파일하지 않고 Linux에서 네임스페이스를 비활성화합니다.

Linux에서 시작 또는 런타임 시 모든 네임스페이스 유형을 비활성화하는 방법이 있습니까?

답변1

각 네임스페이스 유형에 대해 사용자(루트 포함)당 최대 네임스페이스 수는 sysctl을 통해 정의할 수 있습니다.
내 Linux 5.4(*) 아래에 나열된 대로:

Tux /proc/sys/user # sysctl -a | grep namespace
user.max_cgroup_namespaces = 31889
user.max_ipc_namespaces = 31889
user.max_mnt_namespaces = 31889
user.max_net_namespaces = 31889
user.max_pid_namespaces = 31889
user.max_user_namespaces = 31889
user.max_uts_namespaces = 31889

런타임 시 사용자 ID 네임스페이스를 비활성화하는 것은 다음을 실행하는 것만큼 간단합니다.

sudo sysctl -w user.max_user_namespaces=0

초기화 중에 이 설정을 고려하도록 활성화하는 것은 초기화 시스템에 따라 다릅니다. (예: /etc/sysctl.confopenrc에서 부팅 시 시작되도록 서비스 편집 및 구성)sysctl

모든 sysctl에 대해 이 작업을 계속하면 모든 유형의 네임스페이스가 효과적으로 비활성화됩니다.

그러나 계속하지 않는 것이 좋습니다.많은 일반 응용 프로그램(심지어 일부 시스템 기능 및 서비스)만 실행하려면 네임스페이스 지원이 필요할 수 있으므로 실행 중인 시스템과 응용 프로그램을 완전히 이해하지 못한 채 (모두 비활성화).
최소한 달리세요lsns -l현재 내 시스템에서 액세스 가능한 모든 네임스페이스에 대한 정보를 나열하기 위해 시스템이 일반적인 작업 부하를 실행 중인 경우:

acoswt@Tux ~ $ sudo lsns -l
        NS TYPE   NPROCS   PID USER   COMMAND
4026531835 cgroup    126     1 root   init [3]  
4026531836 pid       108     1 root   init [3]  
4026531837 user      108     1 root   init [3]  
4026531838 uts       126     1 root   init [3]  
4026531839 ipc       126     1 root   init [3]  
4026531840 mnt       125     1 root   init [3]  
4026531860 mnt         1    18 root   kdevtmpfs
4026531992 net       108     1 root   init [3]  
4026532251 pid         2  2061 acoswt /usr/lib64/chromium-browser/chrome --type=zygote…
4026532253 net        18  2061 acoswt /usr/lib64/chromium-browser/chrome --type=zygote…
4026532276 user       18  2061 acoswt /usr/lib64/chromium-browser/chrome --type=zygote…

처음 10줄은 네임스페이스 유형 중 하나를 비활성화하는 것이 현명하지 않다는 것을 알려줍니다 ;-)


(*)최신 버전의 Linux 커널에서는 더 많은 네임스페이스 유형에 대한 지원이 추가됨에 따라 더 많은 조정 가능 항목이 표시될 수 있습니다. 예를 들어 최대 시간 네임스페이스시간 네임스페이스는 linux-5.6부터 지원됩니다.

관련 정보