スーパーユーザー
スーパーユーザー(英語: Superuser)とは、多くのオペレーティングシステム (OS) でシステムアドミニストレータが制御する特殊なユーザーアカウントを指す。オペレーティングシステム (OS) によって実際の呼称は異なり、ルート (root)、アドミニストレータ (administrator)、アドミン (admin)、スーパーバイザ (supervisor) などとも呼ばれる。場合によっては名称は重要ではなく、ユーザーのプロファイルで権限フラグを設定することで特権的機能を実行できることもある(管理者権限などと呼ばれる)。
スーパーユーザーの概念を持つOSでは、一般に多くのアプリケーションは、システム全体を変更できない「通常アカウント」で実行することが推奨される。
UNIXとUnix系OS
[編集]Unix系OSでは、root が全モード(シングルユーザー/マルチユーザー)で全権利(あるいはパーミッション)を持つユーザーの既約名である。BeOSではbaron、一部のUnix系システムではavatarと呼ぶ[1]。BSD系システムではtoor(rootの逆)アカウントも用意されていることが多い[2]。名前はどうであれ、スーパーユーザーのユーザー識別子は常に 0 である。rootは普通のユーザーではできない多くのことができる。例えば、ファイルパーミッションを無視してファイルを操作したり、1024以下のポートを操作したりといったことである。"root" という名称は、Unix系システムのルートディレクトリのパーミッションを変更できる唯一のユーザーアカウントだからだとされており、ルートディレクトリはrootのホームディレクトリでもある[3]。
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アカウントをデフォルトで使用不可とした[4]。
Windowsのadministratorアカウントは、UNIXのrootアカウントと正確に対応するわけではない。administratorアカウントはrootよりも権限の範囲が狭く、一部のスーパーユーザー特権は "Local System" アカウントに割り当てられている[5]。
Windows 2000以降では、cmd.exe や COMMAND.COM の内部コマンドとして、プログラムを任意のユーザー権限(スーパーユーザー権限も含む)で実行するための RUNAS コマンドが用意されている[6]。また、GUI環境においては、プログラムやそのショートカットを、シフト・キーを押しながら右クリックすると、任意のユーザ権限で実行させることができる。
Windows Vista以降UACが導入されたため、特権を高めてプロセスを実行する際には認証を求めるプロンプト(ダイアログ)が現れる。Windows XP とそれ以前では、管理者権限を持つユーザーアカウントで無制限に特権的な処理が可能で、このセキュリティ上の問題からUACが開発されることになった。
Novell NetWare
[編集]NetWareではスーパーユーザーを当初「スーパーバイザ (supervisor)」と呼び、後に「アドミン (admin)」に改称した。
古い個人用システム
[編集]MS-DOSやWindows 9x系のような一人の個人が使用することを前提としたOSでは、特別なスーパーユーザーアカウントは存在しなかった。事実上、そのシステムを使用する者には常に管理者特権が与えられていたとみなすことができる。管理者特権を通常のユーザーと分離することにより、OSのセキュリティが強化された。そのような分離をしていないOSはセキュリティレベルが低いと考えられる[7]。
脚注
[編集]- ^ The Jargon File (version 4.4.7), catb.org
- ^ "What is this UID 0 toor account?", freebsd.org
- ^ What is root? -- definition by The Linux Information Project (LINFO)
- ^ Enable and Disable the Built-in Administrator Account
- ^ Types of user accounts
- ^ Runas
- ^ 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