「プロセスにスーパーユーザー権限があります」とはどういう意味ですか?

「プロセスにスーパーユーザー権限があります」とはどういう意味ですか?

APUEから

  1. プロセスにスーパーユーザー権限がある場合、setuid関数は実際のユーザーID、有効なユーザーID、および保存されたset-user-IDをuidに設定します。
  2. プロセスにスーパーユーザー権限がないが、uidが実際のユーザーIDまたは保存されたset-user-IDと同じ場合、setuidは有効なユーザーIDのみをuidに設定します。実際のユーザーIDと保存されたセットユーザーIDは変更されません。
  3. どちらの条件も真でない場合、errno が EPERM に設定され、-1 が返されます。

「プロセスにスーパーユーザー権限があります」とはどういう意味ですか?

これは、プロセスの実際のユーザーIDが0、つまりルートであることを意味しますか?

これは、プロセスの有効なユーザーIDが0、つまりルートであることを意味しますか?

ありがとうございます。

答え1

POSIXでプロセスにスーパーユーザー権限がある場合効果的なユーザーIDは0です。

(一部のUnixスタイルシステムには他のメカニズムがあります。たとえば、基本的なアクセス制御システムも機能を考慮しているLinuxでは、root有効ユーザーとして実行されますが、機能がないため、あまりやらないsetuidバイナリを生成できます。setuidマンページ.)

アプエ指定された動作説明setuid。コンテキストはユーザーID設定形式で提供されます。exec:実行可能ファイルにsetuidこのビットが設定されていて、そのファイルシステムが無効にされずにマウントされている場合、setuidそれを実行すると、exec有効なユーザーがファイルの所有者であり、実際のユーザーと保存されたユーザーが呼び出し側のユーザーであるプロセスが作成されます。

有効なrootユーザーとして呼び出されると、setuidすべてのユーザーIDが置き換えられます。それ以外の場合は、有効なIDのみが置き換えられます。これは最終的に混乱しています...この動作の理由はPOSIX仕様の理論的根拠に示されています。loginそして、suキャンセルできない方法でユーザーIDを変更する機能が必要です。これを行う唯一の方法は、すべてのIDを変更することです。 ID。

関連情報