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.conf
openrc에서 부팅 시 시작되도록 서비스 편집 및 구성)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부터 지원됩니다.