スーパーユーザー

スーパーユーザー（）とは、多くのオペレーティングシステム (OS) でシステムアドミニストレータが制御する特殊なユーザーアカウントを指す。OSによって実際の呼称は異なり、ルート ()、アドミニストレータ ()、アドミン ()、スーパーバイザ () などとも呼ばれる。場合によっては名称は重要ではなく、ユーザーのプロファイルで権限フラグを設定することで特権的機能を実行できることもある（管理者権限などと呼ばれる）。

スーパーユーザーの概念を持つOSでは、一般に多くのアプリケーションは、システム全体を変更できない「通常アカウント」で実行することが推奨される。

 UNIXとUnix系OS 
Unix系OSでは、root が全モード（シングルユーザー/マルチユーザー）で全権利（あるいはパーミッション）を持つユーザーの既約名である。BeOSではbaron、一部のUnix系システムではavatarと呼ぶThe Jargon File (version 4.4.7), catb.org。BSD系システムではtoor（rootの逆）アカウントも用意されていることが多い"What is this UID 0 toor account?", freebsd.org。名前はどうであれ、スーパーユーザーのユーザー識別子は常に 0 である。rootは普通のユーザーではできない多くのことができる。例えば、ファイルパーミッションを無視してファイルを操作したり、1024以下のポートを操作したりといったことである。"root" という名称は、Unix系システムのルートディレクトリのパーミッションを変更できる唯一のユーザーアカウントだからだとされており、ルートディレクトリはrootのホームディレクトリでもあるWhat is root? -- definition by The Linux Information Project (LINFO)。

Unix系システムで最初に起動されるプロセスはinitでroot権限で動作する。Linux Standard Baseでもinitを定義している（現在のLinuxのいくつかのシステムではsystemdを最初に起動しinitを利用していない）。他のプロセスはinitが直接または間接に起動するので、親の特権を継承する。root権限を持つプロセスだけが、自分のユーザー識別子を別のユーザーのものに変更でき、一度それを行うとrootに戻すことはできない。これを「root権限放棄」などと呼び、プロセスが汚染された場合のダメージを最小限にするセキュリティ手段としてよく行われる。別のケースとしてログインなどのユーザーに身分証明を求めるプログラムがあり、認証に成功すればそのアカウントの権限でプログラムを実行できるようになる。

一般に、通常使用するアカウントとしてrootを使用すべきでない。ちょっとしたタイプミスでもシステムに重大な損害を与える可能性がある。普通のユーザーアカウントを作成して日常の利用に使うことを推奨する。suコマンドを必要なときに使うようにすべきである。sudoユーティリティを代わりに使うこともできる。

macOSや一部のLinuxなどの多くのOSでは、管理者アカウントで出来ることを制限することができる。場合によっては管理者アカウントを使えなくすることもでき、その場合は必要に応じて使えるようにしなければならない。El Capitan以降のmacOSのセキュリティ機能、システム整合性保護ではスーパーユーザーは設定を変更しない限り使えないようになっている。Plan 9などごく一部のシステムでは、スーパーユーザーが全く存在しない。

 Windows NT 
Windows NTとその派生OS（Windows 2000、Windows XP、Windows Server 2003、Windows Vista、Windows 7 、Windows 8など）では、スーパーユーザーは存在することもあるし、そうでない場合もある。XPとそれ以前では、デフォルトで Administrator というスーパーユーザーのアカウントがある。また、Administrator相当の権限を設定したユーザーアカウントがある場合、もともとのAdministratorアカウントを隠すことができる。このもともとのAdministratorアカウントにはパスワードが設定されていなかったため、セキュリティ上の重大問題だとして Windows Vista とそれ以降ではユーザーアカウント制御 (UAC) を導入し、Administratorアカウントをデフォルトで使用不可としたEnable and Disable the Built-in Administrator Account。

Windowsのadministratorアカウントは、UNIXのrootアカウントと正確に対応するわけではない。administratorアカウントはrootよりも権限の範囲が狭く、一部のスーパーユーザー特権は "Local System" アカウントに割り当てられているTypes of user accounts。

Windows 2000以降では、cmd.exeやCOMMAND.COMの内部コマンドとして、プログラムを任意のユーザー権限（スーパーユーザー権限も含む）で実行するための RUNAS コマンドが用意されているRunas。また、GUI環境においては、プログラムやそのショートカットを、シフト・キーを押しながら右クリックすると、任意のユーザ権限で実行させることができる。

Windows Vista以降UACが導入されたため、特権を高めてプロセスを実行する際には認証を求めるプロンプト（ダイアログ）が現れる。Windows XPとそれ以前では、管理者権限を持つユーザーアカウントで無制限に特権的な処理が可能で、このセキュリティ上の問題からUACが開発されることになった。

 Novell NetWare 
NetWareではスーパーユーザーを当初「スーパーバイザ (supervisor)」と呼び、後に「アドミン (admin)」に改称した。

 古い個人用システム 
DOSやWindows 9x系のような一人の個人が使用することを前提としたOSでは、特別なスーパーユーザーアカウントは存在しなかった。事実上、そのシステムを使用する者には常に管理者特権が与えられていたとみなすことができる。管理者特権を通常のユーザーと分離することにより、OSのセキュリティが強化された。そのような分離をしていないOSはセキュリティレベルが低いと考えられるSecurity soapbox - a humorous and brief explanation of Windows insecurity。

 脚注 

 外部リンク 
 FreeBSDハンドブック、セキュリティ
 root Definition - by The Linux Information Project (LINFO)
 Discussion on origin of Charlie Root at pipermail

Category:オペレーティングシステムの仕組み
Category:コンピュータセキュリティ
Category:システム管理