Linux権限とSUIDとは:所有者と実行権限を学ぶ基礎
Linuxでは、ファイルやディレクトリごとに、所有者、グループ、権限が設定されています。
これらは「誰がどの操作をできるか」を決める仕組みであり、ファイルが見えることと、内容を読めること、実行できることは別の条件です。
権限が表す範囲
読み取り権限、書き込み権限、実行権限は、通常のファイルとディレクトリで意味が異なります。
ディレクトリの場合、実行権限はその中をたどるために必要になります。
エラーの内容と所有者、権限の表示を対応させると、何が不足しているかを推測できます。
SUIDが変える実行時の権限
SUIDが付いた実行ファイルは、起動した利用者ではなく、ファイル所有者の実効権限で動作します。
特定の処理だけに高い権限が必要な場合に使われますが、入力、呼び出すプログラム、書き込み先の扱いを誤ると、権限の境界が崩れます。
そのため、SUIDは便利な一般設定ではなく、必要性を絞って検討する対象です。
最小権限で設計する
サービスごとに利用者を分け、必要なファイルと操作だけに権限を与えると、誤りが起きたときの影響範囲を小さくできます。
特権処理は入力を検証し、環境変数や検索パスなど、実行条件に影響する値を不用意に引き継がない設計が必要です。
監査では、権限が広すぎる場所と、特権で動く処理が何を行うかを別々に確認します。
対象を広げない
権限設定や特権プログラムの調査は、管理権限を持たない実在のサーバーで試す行為を正当化しません。
キノコハッカーの演習環境と、明示的に許可された端末だけを対象にしてください。
Linuxカテゴリ、Linuxセキュリティ入門、最小権限の用語解説へ進めます。