
コンピューティングにおいて、スーパーユーザーとはシステム管理に使用される特別なユーザーアカウントです。オペレーティングシステム(OS)によって、このアカウントの実際の名称はroot、administrator、admin、またはsupervisorとなります。スーパーユーザーアカウントはシステム全体にわたる無制限かつ潜在的に有害な変更を加えることができるため、最小権限の原則では、ほとんどのユーザーとアプリケーションは、通常のアカウントで作業を行うことが推奨されています。
場合によっては、アカウント名によってユーザーがスーパーユーザーであるかどうかが決定されます。アカウント名が決定要因にならない場合もあります。例えば、Unix系システムでは、ユーザー識別子(UID)が0のユーザーは、アカウント名に関わらずスーパーユーザー(つまり、uid=0)となります。[ 1 ]また、ロールベースのセキュリティモデルを実装したシステムでは、スーパーユーザーのロールを持つユーザーは誰でも、スーパーユーザーアカウントのすべての操作を実行できます。
Unix系コンピュータOS( Linuxなど)では、 rootは、すべてのモード(シングルユーザーまたはマルチユーザー)で(すべてのファイルとプログラムに対して)すべての権限または許可を持つユーザーの慣例的な名前です。別名には、BeOSではbaron、一部のUnix系ではavatarがあります。 [ 2 ] BSDでは、rootアカウントに加えてtoor (「root」を逆に書いたもの)アカウントが提供されることがよくあります。 [ 3 ]名前に関係なく、スーパーユーザーのユーザーIDは常に0です。rootユーザーは、ファイルの所有権の変更や1024未満の ネットワークポートへのバインドなど、通常のユーザーができない多くのことができます。
rootという名前は、Unix システムのルート ディレクトリを変更する権限を持つ唯一のユーザー アカウントがrootであることに由来すると考えられます。このディレクトリは元々、root のホーム ディレクトリであると考えられていましたが、[ 4 ] UNIXファイルシステム階層標準では、root のホームを/rootにすることを推奨しています。[ 5 ] Unix 系システムで最初にブートストラップされるプロセス(通常initと呼ばれます) は、root 権限で実行されます。このプロセスは、直接的または間接的に他のすべてのプロセスを生成します。これらのプロセスは、それぞれの親の権限を継承します。root として実行されているプロセスだけが、ユーザー ID を別のユーザーの ID に変更できます。一度変更すると、元に戻すことはできません。これを行うことは、root 権限のドロップと呼ばれることもあり、プロセスの汚染による損害を制限するセキュリティ対策として行われることがよくあります。もう 1 つの例は、ユーザーに資格情報を求め、認証に成功した場合はアカウントの権限でプログラムを実行できるようにする loginなどのプログラムです。
多くの場合、 rootを通常のユーザーアカウントとして使用しないことが推奨されています。[ 6 ] [ 7 ]これは、コマンド入力時の単純なタイプミスがシステムに重大な損害を与える可能性があるためです。代わりに、通常のユーザーアカウントを使用し、su(substitute user)またはsudo(substitute user do)コマンドのいずれかを使用します。suを使用する方法では、ユーザーはrootのパスワードを知っている必要があります。一方、sudoを使用する方法では、 /etc/sudoersファイル内でユーザーが「rootとして」実行できる権限を持っている必要があります。これは通常、 wheel、[ 8 ] adm、[ 9 ] admin、またはsudoグループのメンバーになることによって間接的に行われます。
いくつかの理由から、sudoアプローチは現在では一般的に好まれています。例えば、誰がコマンドを使用し、どのような管理操作を実行したかの監査証跡が残ります。 [ 10 ]
macOSや一部のLinuxディストリビューション(特にUbuntu [ 6 ] )などの一部のOSでは、作成された初期ユーザーにsudo経由でrootとして実行する権限が自動的に付与されますが、これは管理操作を行う前にパスワードを要求するように設定されています。場合によっては、実際のrootアカウントがデフォルトで無効になっており、直接使用することはできません。[ 6 ] Apple iOSやAndroidなどのモバイルプラットフォーム向けOSでは、スーパーユーザーアクセスは設計上アクセスできませんが、一般的にセキュリティシステムを悪用してスーパーユーザーアクセスを取得することができます。Plan 9など、いくつかのシステムではスーパーユーザーは存在しません。[ 11 ]
Windows NTおよびそれ以降の派生システム ( Windows 2000、Windows XP、Windows Server 2003、Windows Vista / 7 / 8 / 10 / 11など)では、少なくとも 1 つの管理者アカウント (Windows XP 以前) またはスーパーユーザーに権限を昇格できるアカウント (ユーザー アカウント制御を介して Windows Vista/7/8/10/11 ) が必要です。[ 12 ] Windows XP 以前のシステムには、ユーザー管理者と同等のアカウントが存在する場合に非表示のままになる組み込みの管理者アカウントがあります。[ 13 ]この組み込みの管理者アカウントは、空のパスワードで作成されます。[ 13 ]パスワードが空白のままの場合、ローカル ユーザーが組み込みの管理者アカウントを介してコンピューターにアクセスできるため、セキュリティ上のリスクが生じます。そのため、Windows Vista 以降のシステムでは、ユーザー アカウント制御 (UAC) の導入により、このアカウントは既定で無効になっています。[ 13 ]リモート ユーザーは組み込みの管理者アカウントにアクセスできません。
Windows の管理者アカウントは、 Unixのルートアカウントと完全に同じではありません。管理者、組み込みの管理者アカウント、およびユーザー管理者アカウントは、同じレベルの権限を持ちます。Windows システムで作成されるデフォルトのユーザーアカウントは、管理者アカウントです。macOS、Linux、Windows Vista/7/8/10 の管理者アカウントとは異なり、UAC 非対応の Windows システムの管理者アカウントでは、完全なルートアクセスに伴う多くの落とし穴からシステムを保護できません。これらの落とし穴の 1 つとして、マルウェア感染に対する耐性の低下が挙げられます。これを回避し、UAC 非対応の Windows システムで最適なシステムセキュリティを維持するには、必要に応じて、組み込みの管理者アカウントまたは別の管理者アカウントに設定されたパスワードを使用して、標準ユーザーアカウントから認証することをお勧めします。
Windows Vista/7/8/10/11の管理者アカウントでは、昇格された権限でプロセスを実行する際に認証プロンプトが表示されます。通常、管理者アカウントではUACプロンプトの認証にユーザー資格情報は必要ありませんが、標準ユーザーアカウントではUACプロンプトの認証に管理者のユーザー名とパスワードの入力が必要です。Windows XP(およびそれ以前のシステム)の管理者アカウントでは、昇格された権限でプロセスを実行する際に認証は必要ありません。これはセキュリティリスクとなり、UACが開発されました。ユーザーは、プロセスを「管理者として実行」に設定するか、runasコマンドを使用して管理者アカウントの資格情報(ユーザー名とパスワード)でプロンプトを認証することで、標準アカウントからプロセスを昇格された権限で実行するように設定できます。標準アカウントからの認証の利点の多くは、使用する管理者アカウントの資格情報のパスワードが空白の場合(Windows XP以前のシステムの組み込み管理者アカウントのように)、無効になります。そのため、組み込み管理者アカウントにはパスワードを設定することが推奨されます。
Windows NT 、2000以降では、ルートユーザーは管理者アカウントです。[ 14 ]
Novell NetWareでは、スーパーユーザーは「スーパーバイザー」と呼ばれ、[ 15 ]後に「管理者」と呼ばれました。
OpenVMS では、「SYSTEM」は OS のスーパーユーザー アカウントです。
個人や家庭での使用を目的としたコンピュータに搭載されていた多くの古いOSでは、システムを使用するすべてのユーザーが完全な権限を持っていました。DOSなどの多くのシステムには 複数アカウントの概念がなく、Windows 95などでは複数アカウントが認められていましたが、これは各アカウントが独自の設定プロファイルを持つためであり、すべてのユーザーがマシンの完全な管理権限を持っていました。
{{citation}}: CS1 maint: 数値名: 著者リスト (リンク)