アプリケーションが特権なしで実行できるかどうかを調べるには、どの処理がどの特権をいつ必要とするかを知る必要があります。次に、アプリケーションに必要な特権を決定するガイドラインを示します。
特別な処理を実行することがなく、システムの必須アクセス権、任意アクセス権、および所有権制御の範囲内で動作するアプリケーションは特権を必要としません。
オブジェクトに対する読み取り、書き込み、実行、検索の権利が必要なアプリケーション処理は、プロセスに任意アクセス権または必須アクセス権がない場合には特権が必要です。プロセスにアクセス権または必要な特権がない場合、外部変数 errno が EACCES または ESRCH に設定されます。このエラーを修正するために必要な特権は、マニュアルページの EACCES エラーまたは ESRCH エラーに示されています。
アプリケーション処理が修正しようとしているオブジェクトが、そのオブジェクトを所有するプロセスからしか修正できないとき、修正を行うプロセスがそのオブジェクトを所有していない場合には特権が必要です。プロセスがそのオブジェクトを所有していないか、あるいはプロセスに適切な特権がない場合、外部変数 errno が EPERM に設定されます。このエラーを修正するための特権は、マニュアルページの「機能説明」の節と EPERM エラーのページに示されています。
アプリケーション処理の中には、常に (任意アクセス権と必須アクセス権が与えられている場合でも) 特権を必要とするものがあります。この例として、実効可能ファイルに対する特権の設定や、ほかのデバイスへのコンソール出力のリダイレクトがあります。プロセスにこのような処理に対する特権がない場合、外部変数 errno が EPERM に設定されます。このエラーを修正するための特権は、マニュアルページの「機能説明」の節と EPERM エラーのページに示されています。
特権の詳細を述べたマニュアルページの出力方法については、付録 A 「プログラマーズリファレンス」を参照してください。