スーパーユーザー
スーパーユーザー(Superuser)とは、多くのオペレーティングシステムでシステムアドミニストレータが制御する特殊なユーザーアカウントを指す。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 権限で動作する。他のプロセスは init が直接または間接に起動するので、親の特権が継承される。root 権限を持つプロセスだけが、自分のユーザー識別子を別のユーザーのものに変更でき、一度それを行うと root に戻すことはできない。これを「root権限放棄」などと呼び、プロセスが汚染された場合のダメージを最小限にするセキュリティ手段としてよく行われる。別のケースとしてログインなどのユーザーに身分証明を求めるプログラムがあり、認証に成功すればそのアカウントの権限でプログラムを実行できるようになる。
一般に、通常使用するアカウントとして root を使用すべきでない。というのも、ちょっとしたタイプミスでもシステムに重大な損害を与える可能性があるからである。普通のユーザーアカウントを作成して日常の利用に使うことが推奨され、suコマンドを必要なときに使うようにすべきである。sudoユーティリティを代わりに使うこともできる。
Mac OS X や一部の Linux などの多くのOSでは、管理者アカウントで出来ることを制限することができる。場合によっては管理者アカウントを使えなくすることもでき、その場合は必要に応じて使えるようにしなければならない。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はセキュリティレベルが低いと考えられる[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