Dockerコンテナでコマンドを実行すると、次のようになります。
# ip netns exec 9ee961d90990 ifconfig
setting the network namespace "9ee961d90990" failed: Operation not permitted
すでに追加した拡張機能を使用してコンテナを直接起動できますが、net_admin
このコマンドを実行するために必要なシステム機能を確認する方法はありますか?
これを行うには、コンテナを起動し、dockerに関連するすべてのセキュリティを踏むことが可能です--privileged
が、可能であればそうしないことをお勧めします。これで上記のコマンドが成功します。
答え1
~によるとsetns(2) マニュアルページCAP_SYS_ADMIN
ターゲットネットワークの名前空間に参加する必要があります。ただし、setns()
ファイル記述子を使用して作業した後は、追加機能が必要になることがあります/run/netns/...
。このネットワーク名前空間をどのように作成したかを知らなかったので、次のように作成されたとします。ip netns add ...
したがって、バインドマウントされたネットワーク名前空間は以下を指します。nsfs
(名前空間ファイルシステム)とにかく。
これは通常/run/netns/...
ルート領域であるため、CAP_DAC_OVERRIDE
またはこれが必要な場合がありますCAP_DAC_READ_SEARCH
。Function(7) マニュアルページ。また、ptrace機能により、CAP_SYS_PTRACE
多くのinodeへのアクセスがさらに制限される可能性があります。/proc