6.6. setuid や setgid したスクリプトを使わない

Unix ライクなシステムの多く、特に Linux では、スクリプトに設定してある setuid や setgid ビットを無視して、競合状態を避けています。これは先に述べた通りです。 setuid したスクリプトに対する Unix ライクなシステムのサポート具合はまちまち なので、新しいアプリケーションでは可能な限り避けるのがベストです。 例外として Perl は、特別な設定をほどこすことで、setuid した Perl スクリプト が実行できるようになります。つまり本当にこの種の機能が必要なら、 Perl を使えば setuid や setgid を使えるようになります。 この種の機能を自作のインタプリタでサポートする必要があるなら、Perl がどうして いるのかを調べてみてください。 一方、簡単な方法として、setuid もしくは setgid した小さな実行形式でスクリプト を「ラップ」し、安全な環境(環境変数をクリアにした上で設定する)を構築して から、スクリプトを呼び出す方法もあります(スクリプトのフルパスを使って)。 攻撃者がスクリプトを絶対変更できないようにしてください。 シェルスクリプト言語にはもっと問題があるので、setuid や setgid をかける べきではありません。この点の詳しい情報は、Section 9.4 を見て ください。