コンパイルせずに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行は、名前空間タイプの1つを無効にするのが賢明ではないことを示しています;-)


(*)最新バージョンのLinuxカーネルでは、より多くのネームスペースタイプのサポートが追加されるにつれて、より調整可能な項目が表示されることがあります。例えば 最大時間ネームスペース時間ネームスペースはlinux-5.6からサポートされています。

関連情報