
ファイルにアクセスすると、プロセスの有効なユーザーIDでファイル権限が確認されます。ただし、ユーザーIDを変更する方法(例えばsetuid()
、、、setreuid()
)seteid()
。
これらの関数では、その関数を呼び出すプロセスの有効なユーザーID(有効なユーザーIDはroot)からスーパーユーザー権限も確認されますか?
答え1
「スーパーユーザー権限があります」という表現は異なる意味を持つことができます。文脈を見てください。
システム管理の観点から「スーパーユーザー権限を保持」とは、通常、rootアカウントへのアクセスを許可されているユーザーを意味します。たとえば、sudo設定で権限が付与されているか、ルートパスワードを知っているためです。
プログラミング環境では、「スーパーユーザー権限」とは通常、UID 0で実行されるプロセスを意味します。システムコールが承認されるかどうかを議論するときなど、特定の時点で指定されている場合、通常はほとんどのシステムコールに対して有効なUIDが0であることを意味します。永続的な状態の場合、これは通常、プロセスが有効なUIDを0に設定できることを意味します。これには、実際のユーザーまたは保存されたユーザーUIDが0のプロセスも含まれます。
特定の機能の正確な要件を知りたい場合は、システムの対応する機能のマニュアルを確認してください(デフォルトのカーネルによって異なります)。
TL、DR:状況は重要です。