set-user 識別 (setuid) アクセス権を実行可能ファイルに設定すると、このファイルを実行するプロセスには、その実行可能ファイルを実行しているユーザーではなく、ファイルの所有者 (通常は root) に基づいてアクセス権が与えられます。このため、通常は所有者しか利用できないファイルやディレクトリにユーザーがアクセスできます。たとえば次に示すように、passwd コマンドは root の setuid アクセス権が設定されているので、ユーザーは root の権限でパスワードを変更できます。
-r-sr-sr-x 3 root sys 104580 Sep 16 12:02 /usr/bin/passwd |
これは、プロセスの実行が終了した後でも、高度な知識のあるユーザーは setuid プロセスによって与えられたアクセス権を維持する手段を見つけることができるため、セキュリティ上危険であることを示しています。
プログラムから予約済み UID (0 - 99) で setuid アクセス権を使用しても、実効 UID は正しく設定されない場合があります。シェルスクリプトを代わりに使用するか、setuid アクセス権では予約済み UID を使用しないようにしてください。