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行は、名前空間タイプの1つを無効にするのが賢明ではないことを示しています;-)
(*)最新バージョンのLinuxカーネルでは、より多くのネームスペースタイプのサポートが追加されるにつれて、より調整可能な項目が表示されることがあります。例えば 最大時間ネームスペース時間ネームスペースはlinux-5.6からサポートされています。