105.2標準
rootが管理する/usr/local/sbin/cleanupへスクリプトを配置する。
一般ユーザーは実行できるが、内容を変更できないようにする。
適切な所有権とモードの組合せはどれか。
× 不正解
root:rootかつ755なら所有者だけが書込み可能で、他ユーザーには読み取りと実行だけを許可できる。setuidを付けても一般的なLinuxはシェルスクリプトで安全な権限昇格手段として扱わない。
詳細解説
誤り
root:root / 644書込みはrootに限定されるが、実行ビットがなく直接実行できない。
誤り。644は一般ユーザーの書込みを防ぐが実行ビットを持たず、パスを直接コマンドとして起動できない。
誤り
root:root / 777一般ユーザーも内容を変更でき、管理スクリプトの改ざんを許す。
誤り。777では一般ユーザーにも書込み権限があり、管理者が起動する処理へ任意コードを混入され得る。
誤り
user:user / 755一般ユーザー所有なら、そのユーザーが管理用処理を書き換えられる。
誤り。755でも所有者には書込み権限があるため、一般ユーザーuserが管理用スクリプトを変更できる。
正しい
root:root / 755rootだけが書き込め、全利用者が読み実行できる。
正しい。所有者rootにrwx、グループとその他にr-xを与え、一般ユーザーの直接実行を許しながら改ざんを防ぐ。
実際に確かめる
一時的な検証環境で実行できる例です。
file=$(mktemp); chmod 755 "$file"; stat -c '%A %a' "$file"; rm -f -- "$file"期待される結果
-rwxr-xr-x 755理解のポイント
- 所有者だけ書込み
- 他は読み実行
- 管理パスを一般ユーザー書込不可にする
確認時の注意
- 確認環境: GNU coreutils 9.x / 一時ファイルでモードだけ検証
- 本番配置では所有権、親ディレクトリ、更新経路を合わせて確認する。
基礎のおさらい
ディレクトリ権限
ファイルだけでなく/usr/local/sbin等の親ディレクトリも一般ユーザーが置換や改名できない所有権・権限にする。
setuidスクリプト
シェルスクリプトへsetuidを付ける方法は安全な権限昇格設計ではなく、必要な管理操作は限定したsudo等で設計する。
問題IDKP-105-639
確認環境GNU coreutils 9.x / 一時ファイルでモードだけ検証
最終技術確認2026-08-13
誤り・権利侵害を報告