過去問ドリル

LinuCレベル3 セキュリティスペシャリスト アクセスおよび権限制御の強化 問39

アクセスおよび権限制御の強化/Linux Capabilities による権限制御

現在のシェルプロセスが保持するケーパビリティセット(許可・実効・継承・バウンディング・アンビエントのすべて)を人間が読みやすい形式で一括確認したい。コマンドとして適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「アクセスおよび権限制御の強化」に対応。実際の試験問題ではありません)

正解:A

解説

`capsh --print` は現在のプロセスが持つ許可(permitted)・実効(effective)・継承(inheritable)・バウンディング(bounding)・アンビエント(ambient)の各ケーパビリティセットを、CAP_NET_ADMIN などの名前で人間が読みやすい形式で表示します。`getcap` はファイルに付与されたファイルケーパビリティを表示するコマンドで、プロセスのケーパビリティセットは表示しません。`/proc/$$/status` の Cap* 行は各セットを64ビット16進数マスクで表示するため、名前への変換なしには読みにくい形式です。`setcap` はファイルにケーパビリティを設定するコマンドで、読み取りには使いません。

選択肢ごとの解説

  • A正しい。capsh --print は現在のプロセスのすべてのケーパビリティセット(許可・実効・継承・バウンディング・アンビエント)をCAP_SYS_ADMINなどの名前付きで一括表示するコマンドである。
  • B誤り。getcap はファイルシステム上の実行ファイルに付与されたファイルケーパビリティを表示するコマンドであり、プロセスが現在保持しているケーパビリティセットの状態は表示しない。
  • C誤り。/proc/$$/status の CapInh・CapPrm・CapEff・CapBnd・CapAmb 行は各セットを64ビットの16進数マスクとして表示し、名前付きのケーパビリティとして読み取るには capsh --decode などで変換が必要である。
  • D誤り。setcap はファイルにケーパビリティを設定するコマンドで、-l というオプションは存在しない。ファイルのケーパビリティを表示するには getcap を使う。
LinuCレベル3 セキュリティスペシャリストの問題を演習モードで解く