Linux & Shell

Capabilityデコードビットから名前へ

16進数または/procのCapフィールドを1行入力し、能力の番号と概要を確認します。

Capabilityデコード

名前からビットを選択

有効な値を解析すると選択できます。変更する1ビットをプレビューし、名前のないビットは保持します。

デコード結果

貼り付けた値はブラウザー内で処理します。端末の状態を読み取ったり、サーバーへ送信したりしません。

名前表と出力

固定したUAPIの名前表です。利用中のカーネルの検出や権限判定の再現は行いません。

結果が古くなりました。解析後にビット変更や出力を行ってください。

Capabilityデコードは、プロセスの状態に長い16進数しか出てこないときに役立ちます。CapEffとCapBndが同じ数値でも、集合の役割は異なるため、元のフィールド名を残して調べてください。

サンプルは14個の能力が立つ例です。端末の実際の状態でも、あらゆるコンテナーに共通する初期設定でもありません。数値とその出所を一緒に確認できます。

Capabilityデコードで確認できること

名前の解釈が変わっても、元のビット列は保ちます。

ビットとケーパビリティを対応させる

Capabilityデコードでは、立っている位置にCAP_*名と短い説明を対応させます。チェックを変更すると、どの1ビットが変わるかを先に表示し、適用するまで元の入力には触れません。

ビットマスクから能力カードへ線が伸び、選択された位置だけが強調されている

古い表でも新しいビットを残す

3.16の表で名前がない位置も、5.9の表では識別できる場合があります。バージョンを変えても数値は同じです。63番までのビットを保持するため、未知という理由で情報が落ちません。

同じビット列を異なる名前表で表示し、未知のビットが新しい表で識別される

フィールドと名前表を取り違えない

01

1行ずつ扱う

CapEff: 0000000000000003のような行か、値だけを貼り付けます。数字だけの10も16進数なので、10進数では16です。別の集合は別々に解析してください。

02

表の対象を確かめる

3.16は37番、5.8は39番、5.9は40番まで名前を持ちます。固定されたUAPIの辞書であり、実行中のカーネルやディストリビューションのバックポートを判定しません。

03

変更はプレビューから適用する

有効な最新結果に対してのみチェックを変更できます。適用すると入力と結果を同時更新し、元に戻すとラベル付きの元の文字列まで復元します。手動実行はCtrl/Cmd + Enterにも対応します。

数値の精度と読みやすい能力一覧

64ビットをそのまま展開

16進ビットマップを符号なし整数として扱い、16桁の小文字16進数と64桁の2進数を表示します。JSONのマスクと10進数は文字列なので、大きな値も丸められません。

番号と用途を照合

各能力に番号と要約を表示します。CAP_NET_BROADCASTは未使用であることを明記します。名前表の範囲外にある位置には推測の名称を付けず、未知の位置として分けて示します。

集合名を残したレポート

出力には名前表とCapEffなどの元のラベルを含めます。capshのデコードと比較する際にも、どの集合を読んだか追えます。テキストレポートは確認用データで、setcapへ渡す式ではありません。

入力と権限解釈の範囲

入力は符号なし16進数
ASCIIの16進数字を1〜16桁入力できます。0xと0X、および前後の空白に対応します。入力全体は256 UTF-16コード単位まで。符号、区切り、桁あふれはエラーにし、切り捨てません。
複数集合を混ぜない
CapInh、CapPrm、CapEff、CapBnd、CapAmbとコロンを受け付けます。status全文、複数の内容行、能力名の列、+ep式は対象外です。PIDやファイル、URLの読み込みも行いません。
実際のアクセス可否は判定しない
execve、名前空間、securebits、seccomp、LSMは再現しません。1個のマスクから必要最小限の権限やコンテナーの特権状態、安全性を判断することはできません。
未知ビットを消さない
名前があるビットだけを選択できます。ほかの置位はマスクとレポートに残ります。全能力の一括選択、未知ビットの削除、権限付与コマンドの生成はありません。
古い結果の出力を防ぐ
入力や名前表を変えた瞬間にコピーと保存を無効にします。自動解析は350ミリ秒待ち、オフにすると予約を取り消します。サンプル、クリア、チェック変更は適用前に確認でき、1回戻せます。

Capabilityデコードのよくある疑問

自分のプロセスが持つCapabilityはどう確認しますか?

対象ホストの/proc/PID/statusでCapフィールドを確認するか、利用可能ならgetpcapsを使います。このページにはその1行を渡します。ブラウザー側からプロセスを読み取る機能はありません。

CAP_SYS_ADMINを付ければ何でもできますか?

いいえ。広い管理操作に関わる能力ですが、ほかの能力や名前空間、LSMなどの制約まで一律に無効にするものではありません。名前だけから実際の操作可否を決めず、対象の操作と環境を確認してください。

プログラムに必要な能力をどう調べますか?

保有している能力と、実行に必要な能力は別です。プログラムの文書や処理内容を調べ、制御された環境で代表的な負荷を確認する必要があります。このツールは呼び出しの追跡や最小権限の推奨を行いません。

permittedの能力が常にeffectiveではないのはなぜですか?

permittedはスレッドがeffectiveへ入れられる能力の上限です。実際の能力検査にはeffectiveが使われます。保持はしていても有効にしていない能力があり得るため、両方のフィールドを区別してください。

能力のepは何を意味しますか?

libcapのpはpermitted、eはeffective状態に関係します。ファイル能力には実行時の規則で使われるeffectiveフラグがあります。cap_net_raw+epは16進数ではないため、この入力欄では受け付けません。

解決しませんでしたか?

次の値を確かめる

Capabilityデコードで元のフィールドを残し、名前のある能力と未知の位置を確認してから、必要な形式でレポートを保存してください。

数値の解析はセキュリティー設定の保証ではありません。