ケーパビリティのエクスポート

http://marc.info/?t=119872761000002&r=1&w=2

Linuxにおいてケーパビリティを扱うには、libcapというライブラリを用いるのが最も可搬性のある賢いやり方だが、現状、一つ問題点がある。

libcapはケーパビリティの名前("cap_net_raw"など)を、値(12など)に変換する機能を持っているが、この名前リストというのは、libcapをビルドした環境のカーネルヘッダファイルから生成される。
したがって、カーネルがバージョンアップし、新しいケーパビリティが追加された場合、それに追従してlibcapを再ビルドする必要がある。

これを避けるには、カーネルが現在利用することのできるケーパビリティの一覧をユーザ空間にエクスポートする機能を作る必要がある。

http://marc.info/?l=linux-security-module&m=119941366418232&w=2
このパッチを適用すると、/sys/kernel/capability 以下にカーネルのサポートするケーパビリティの一覧が出力される。

最初、securityfs以下に作ったが、CONFIG_SECURITYへの依存性がある事と、明示的にsecurityfsをマウントしなければならないために、sysfsに変更。どのディストリビューションでも、ブート時にsysfsは/sys以下にマウントされるので便利。

たぶん、libcapだけでなく、いずれbusyboxにもケーパビリティ関連ツールを移植する際にも役立つだろう。