1.02.1標準
所有者rootの実行可能なバイナリにset-user-IDが設定されている。
一般利用者がそのバイナリを起動する。
典型的な実効ユーザーIDの扱いとして適切なのはどれか。
× 不正解
実行可能ファイルのSUIDは、プロセスの実効ユーザーIDをファイル所有者へ設定し得る。設定は必要最小限にする。
詳細解説
誤り必ず実行者本人の実効ユーザーIDだけで動く
SUIDが有効な実行ファイルでは所有者IDが実効IDへ反映される。
誤り。SUIDが有効なら実効ユーザーIDは実行者本人のままとは限らない。
正しい実行ファイル所有者rootの実効ユーザーIDで動作し得る
set-user-IDは実行時の実効ユーザーIDを所有者へ切り替える。
正しい。root所有のSUIDバイナリは、設計された処理をrootの実効IDで行い得る。
誤り実行者の主グループだけをrootへ変更する
それはSUIDのユーザーID効果ではない。
誤り。SUIDはユーザーID側の効果であり、主グループだけをrootへ変える説明ではない。
誤りファイルをroot所有へ変更するだけでプロセスには影響しない
SUIDは所有権変更ではなく実行時の資格情報に関係する。
誤り。SUIDは所有者属性を書き換えるものではなく、プロセス起動時の資格情報へ影響する。
実際に確かめる
一時的な検証環境で実行できる例です。
tmp=$(mktemp); chmod 4755 "$tmp"; stat -c '%A %a' "$tmp"; rm -f "$tmp"期待される結果
所有者実行位置にsを含む表示と4755。ファイル自体は実行しない理解のポイント
- SUID
- effective UID
- 実行可能バイナリの権限昇格面
確認時の注意
- 確認環境: GNU coreutils 9.x / 空の一時ファイルを表示のみ
- 検証では空ファイルへモードを設定して表示するだけで、SUIDプログラムは実行しない。
基礎のおさらい
安全性
SUIDプログラムの欠陥は権限昇格につながるため、数と処理範囲を最小化する。
スクリプト
多くのLinuxではインタープリタスクリプトのSUIDを安全上の理由から無視する。
問題IDKL-101-385
確認環境GNU coreutils 9.x / 空の一時ファイルを表示のみ
最終技術確認2026-08-13
誤り・権利侵害を報告