Linuxケーパビリティ(りぬっくすけーぱびりてぃ)
最終更新:2026/4/28
Linuxケーパビリティは、root権限を分割し、プロセスに特定の特権のみを付与する仕組みである。
ポイント
従来のroot/非root二分法ではなく、より細粒度の権限管理を可能にし、セキュリティ向上に貢献する。
Linuxケーパビリティとは
Linuxケーパビリティは、Linuxカーネルにおける権限管理の仕組みの一つです。従来のLinuxシステムでは、rootユーザーが全ての権限を持ち、それ以外のユーザーは制限された権限で動作するという二分法が一般的でした。しかし、この方式では、root権限を必要とする処理を実装する際に、セキュリティリスクが高まるという問題がありました。
Linuxケーパビリティは、root権限を細分化し、各プロセスに必要な権限のみを付与することで、この問題を解決します。これにより、root権限を必要としないプロセスは、root権限を持たずに実行できるようになり、セキュリティが向上します。
ケーパビリティの種類
Linuxケーパビリティには、様々な種類があります。代表的なケーパビリティとしては、以下のようなものがあります。
- CAP_CHOWN: ファイルの所有者を変更する権限
- CAP_DAC_OVERRIDE: ファイルのアクセス権限を無視する権限
- CAP_FOWNER: ファイルの所有者であるかのように振る舞う権限
- CAP_NET_ADMIN: ネットワーク設定を変更する権限
- CAP_SYS_ADMIN: システム管理を行う権限
これらのケーパビリティは、setcapコマンドやcapabilities()システムコールを使用して、プロセスに付与することができます。
ケーパビリティの利用例
例えば、特定のプロセスにネットワークインターフェースの設定を変更する権限(CAP_NET_ADMIN)のみを付与し、他の権限を制限することができます。これにより、そのプロセスがネットワーク設定を変更することは可能ですが、システムの他の部分に影響を与えることはありません。
ケーパビリティとACL
Linuxケーパビリティは、アクセス制御リスト(ACL)と組み合わせて使用することで、より柔軟な権限管理を実現できます。ACLは、ファイルやディレクトリに対するユーザーやグループのアクセス権限を細かく設定する仕組みです。ケーパビリティとACLを組み合わせることで、プロセスが持つ権限と、ファイルやディレクトリに対するアクセス権限を両方とも制御することができます。
注意点
ケーパビリティの付与は、慎重に行う必要があります。不適切なケーパビリティを付与すると、セキュリティリスクが高まる可能性があります。ケーパビリティを付与する際には、そのプロセスに必要な権限を正確に把握し、最小限の権限のみを付与するように心がける必要があります。