Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
ケイパビリティのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
ケイパビリティ
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:セキュリティ]] [[en:Capabilities]] [[pt:Capabilities]] [[ru:Capabilities]] [[zh-hans:Capabilities]] ケイパビリティ (POSIX 1003.1e, {{man|7|capabilities}}) はスーパーユーザー権限の細かい制御を提供することで、root ユーザーの使用を減らすことができます。ソフトウェアの開発者は、システムバイナリの強力な [[wikipedia:ja:Setuid|setuid]] 属性を、より最低限のケイパビリティのセットに置き換えることが推奨されています。多数のパッケージがケイパビリティを利用しており、例えば {{ic|CAP_NET_RAW}} は {{Pkg|fping}} バイナリで使われています。これによって ('''setuid''' と同じように) 通常ユーザーで {{ic|fping}} を実行することができ、それと同時に、{{ic|fping}} に脆弱性があった場合のセキュリティ上の影響を緩和することができます。 == 実装 == Linux ではケイパビリティは[[拡張属性]] ({{man|7|xattr}}) の ''security'' 名前空間を使って実装されています。拡張属性は Ext2、Ext3、Ext4、Btrfs、JFS、XFS、そして Reiserfs など全ての主要な Linux [[ファイルシステム]]でサポートされています。以下の例では {{ic|getcap}} を使って fping のケイパビリティを出力し、さらに {{ic|getfattr}} を使ってエンコードされた同じデータを出力しています: {{hc|$ getcap /usr/bin/fping|2= /usr/bin/fping cap_net_raw=ep }} {{hc|$ getfattr -d -m "^security\\." /usr/bin/fping|2= # file: usr/bin/fping security.capability=0sAQAAAgAgAAAAAAAAAAAAAAAAAAA= }} {{ic|cp -a}} を使うと拡張属性は自動的にコピーされますが、プログラムによっては特殊なフラグが必要な場合もあります: {{ic|rsync -X}}。 Arch ではケイパビリティはパッケージのインストールスクリプトによって設定されます (例: {{ic|fping.install}})。 == 管理とメンテナンス == パッケージが過度に強力なケイパビリティを持っている場合はバグと考えられます。なので、ここに記載するのではなくバグとして報告してください。Arch は [[セキュリティ#強制アクセス制御|MAC/RBAC]] システムをサポートしていないため、root アクセスと本質的に等価なケイパビリティ ({{ic|CAP_SYS_ADMIN}}) や root アクセスを容易にするケイパビリティ ({{ic|CAP_DAC_OVERRIDE}}) はバグではありません。 {{Warning|1=特権昇格が可能になるケイパビリティは多数あります。詳しい例や説明は Brad Spengler による [https://forums.grsecurity.net/viewtopic.php?f=7&t=2522&sid=c6fbcf62fd5d3472562540a7e608ce4e#p10271 False Boundaries and Arbitrary Code Execution] を参照してください。}} == ケイパビリティを利用できる他のプログラム == 以下のパッケージには setuid 属性が設定されたファイルがありませんが、実行するには root 権限を必要とします。ケイパビリティを有効にすることで、権限昇格を行わなくても通常ユーザーでプログラムを使うことが可能になります。 ケイパビリティの末尾の {{ic|+ep}} は "実効許可 (effective permitted)" を意味します。詳細は {{man|7|capabilities|File capabilities}} で見られます。 === beep === # setcap cap_dac_override,cap_sys_tty_config+ep /usr/bin/beep === chvt === # setcap cap_dac_read_search,cap_sys_tty_config+ep /usr/bin/chvt === iftop === # setcap cap_net_raw+ep /usr/bin/iftop === mii-tool === # setcap cap_net_admin+ep /usr/bin/mii-tool === mtr === # setcap cap_net_raw+ep /usr/bin/mtr-packet === nethogs === # setcap cap_net_admin,cap_net_raw+ep /usr/bin/nethogs === wavemon === # setcap cap_net_admin+ep /usr/bin/wavemon == 便利なコマンド == setuid-root ファイルを検索: $ find /usr/bin /usr/lib -perm /4000 -user root setgid-root ファイルを検索: $ find /usr/bin /usr/lib -perm /2000 -group root == ケイパビリティを一時的に付与してプログラムを実行する == {{man|1|capsh}} を使うと、バイナリの拡張属性を変更せずに、特定のケイパビリティを持たせてプログラムを実行することができます。 以下の例では、{{ic|CAP_SYS_PTRACE}} ケイパビリティを使って、[[GDB]] を使ってプロセスにアタッチする方法を示しています: $ sudo -E capsh --caps="cap_setpcap,cap_setuid,cap_setgid+ep cap_sys_ptrace+eip" --keep=1 --user="$USER" --addamb="cap_sys_ptrace" --shell=/usr/bin/gdb -- -p <pid> [[netcat]] を使って低いポートにバインドする例: $ sudo -E capsh --caps="cap_setpcap,cap_setuid,cap_setgid+ep cap_net_bind_service+eip" --keep=1 --user="$USER" --addamb="cap_net_bind_service" --shell=/usr/bin/nc -- -lvtn 123 Listening on 0.0.0.0 123 == 参照 == * Man ページ: {{man|7|capabilities}}、{{man|8|setcap}}、{{man|8|getcap}} * [[Wikibooks:Grsecurity/Appendix/Capability Names and Descriptions]] * [https://docs.kernel.org/userspace-api/seccomp_filter.html Seccomp BPF (SECure COMPuting with filters)] {{TranslationStatus|Capabilities|2023-05-11|760131}}
このページで使用されているテンプレート:
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:Man
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:TranslationStatus
(
ソースを閲覧
)
テンプレート:Warning
(
ソースを閲覧
)
ケイパビリティ
に戻る。
検索
検索
ケイパビリティのソースを表示
話題を追加