Linuxコンテナをわずか500行のコードで実装する
Linux containers in 500 lines of code
Linuxコンテナの仕組みを500行のCコードで自作する過程を解説。user namespaces、clone、uid_mapなどの低レベルAPIを駆使し、セキュリティ上の落とし穴も指摘。CAP_SYS_ADMIN剥奪後もuser namespace作成で権限が復活する危険性や、ディストリビューションごとの無効化対応を紹介。
「(実際の) rootユーザーがSYS_CAP_ADMINケーパビリティを剥奪されていても、user namespaceを作成すると、このケーパビリティが(偽の) rootユーザーに対して復活する。つまり、namespace作成前は『mount』が拒否されるが、user namespace作成後は『mount』システムコールが魔法のように再び機能するのだ。」