既存のケーパビリティをベースに新しいケーパビリティを作成することもできます。ここで注目すべきは、既存のケーパビリティが持っていない権限を新しく付与することはできない、ということです。権限を狭くしていくことはできますが、広げることはできません。
たとえば次のように読み書きを与えたケーパビリティから、読み込みのみを許可したケーばビリティを作成してみます。ファイルは「read-cap4.c」としました。
読み込み処理が実行されることがわかります。この使い方は問題ありません。
次に、読み込みのみを許可したケーパビリティから、書き込みも許可したケーパビリティを作成してみます。「read-cap5.c」としました。
次のように実行は実現しません。
ケーパビリティは権限を減らす方向へのみ新しく作成することができます。必要な処理が終わったら、不要な権限は削除していくということができます。