GUI を採用しているWindows OSは、その「中身」をあまり知らなくてもそれなりに使うことができる。だが、より進んだ使い方をしたり、効率よく管理するためには、その内部に対する理解も必要である。本連載ではWindows OSを構成するさまざまな技術について、その内部的な仕組みや構成などを踏まえながら解説していく。今回はユーザーとグループアカウントについて解説する。
Windows OSはGUI(グラフィカルユーザーインターフェース)を採用しているせいもあって、その「中身」をあまり知らなくてもそれなりに使ったり管理したりできる。
だが、より進んだ使い方をしたり、より複雑なシステムを構築したり、さらにはトラブルシューティングなどをするためには、やはりその内部の理解も欠かせない。
今回から始まるこの連載では、Windows OSを構成するさまざまな技術について、毎回テーマを1つ選んで解説する。対象としているのは、これからWindowsのシステム管理を始めるIT担当者や、もっとWindowsを活用して効率を高めたいユーザー、そして改めて復習したい現役のシステム管理者といった方々である。
第1回の今回は、ユーザーアカウントにまつわる話題を取り上げる。
Windows OSにおける「ユーザーアカウント」(単にユーザーともいう)とは、PCを利用するユーザーを識別するために使われる、基本的なメカニズムである。システムを利用したいユーザーは、そのユーザーに割り当てられている一意で固有の識別情報である「ユーザー名」を使ってシステムにログオンする。Windows OSは入力されたユーザー名の正当性をパスワードやスマートカード、PINコード、指紋認証などを使って認証し、正しく認証できた場合は、そのユーザーに対するログオンセッションを開始する。ユーザーがシステムに対して実行可能な操作(権限)はユーザーアカウントごとにあらかじめ決められており、その範囲内でユーザーはシステムのリソースを利用できる。
ユーザーアカウントと並んでもう1つ重要な要素として「グループアカウント」(単にグループともいう)がある。グループとは、複数のユーザーアカウント(および、必要なら他のグループアカウント)をまとめて、1つの代表的なアカウントに集約したものだ。ユーザーアカウントが個人を表すのに対し、単にそれらをまとめて管理しやすくしたものがグループアカウントである。特定の誰かを表すものではないため、例えばWindowsシステムにユーザーアカウントでログオンすることはできても、グループアカウントでログオンすることはできない。
Windowsシステムでは何らかのリソース(機能、サービスなど)を使う場合、必ずユーザーの識別と、そのユーザーに対する権限の検証が行われるが、リソースに対していちいち個別のユーザーごとに権限を与えていては管理が面倒である。このような場合はグループを使って例えば「Sys Operatorグループにはこのリソースの利用を許可する」と指定しておけば指定が簡単になり、便利である。グループのメンバー構成が変わっても(例えばユーザーを追加や削除しても)、そのグループを使っているリソース側(のアクセス権設定)では、何も操作する必要はないからだ。
一般にWindows OSを使う場合、最初にローカルのコンピューター上にユーザーアカウントを作成するが、その場合「標準ユーザー」と「管理者」という2種類のアカウント種別が選択できる。ドメインのアカウントを使う場合でも、やはり一般ユーザーと管理者を選択できる(Windows 8/Windows Server 2012以降では「マイクロソフトアカウント」や「子供」といった種別もあるが、今回は触れない。またドメインについては別途説明する)。
この2種類のアカウントは、利用できるリソースや操作できる権限などに違いがあるが、それはどうしてだろうか?
ユーザーアカウントの情報は、ローカルアカウントの場合は「Security Accounts Manager(SAM)データベース」上に保存されているし、ドメインアカウントの場合は「Active Directoryデータベース」に保存されている。これらのデータベース上の情報としては、この2種類のアカウントにほとんど違いはなく、所属しているグループが異なるだけである。以下に2種類のアカウントの例を示す。
※アカウントの情報を見るには、コマンドプロンプトを開いて「net user 〜」コマンドを実行する
C:\>net user user01 …ローカルの管理者アカウントの例
ユーザー名 user01
フル ネーム
……(中略)……
所属しているローカル グループ *Administrators …所属グループ
所属しているグローバル グループ *None
コマンドは正常に終了しました。
C:\>net user user02 …ローカルの標準ユーザーアカウントの例
ユーザー名 user02
フル ネーム
……(中略)……
所属しているローカル グループ *Users …所属グループ
所属しているグローバル グループ *None
コマンドは正常に終了しました。
C:\>
管理者アカウントの方は「Administrators」というグループに属しているのに対し、標準ユーザーアカウントの方は「Users」というグループに属している点だけが異なる。コントロールパネルのユーザー管理ツールでアカウントの種類を変更すると、所属するグループだけが変わることが分かるだろう。
では、この2つのグループは何が異なるのだろうか? 「net localgroup 〜」コマンドでグループの情報を見てみよう。
C:\>net localgroup Administrators
エイリアス名 Administrators …Administratorsグループ
コメント コンピューター/ドメインに完全なアクセス権があります。
メンバー
--------------------------------
Administrator
EXAMPLEDOM1\Domain Admins …Domain Admins(ドメイン管理者)であれば、このシステムを管理可能
uchikoshi1
user01 …user01はAdminisratorsグループのメンバー
コマンドは正常に終了しました。
C:\>net localgroup Users
エイリアス名 Users …Usersグループ
コメント ユーザーが、システム全体に及ぶ変更を間違ってまたは故意に行うことを防ぎます。ほとんどのアプリケーションを実行することができます。
メンバー
--------------------------------
EXAMPLEDOM1\Domain Users …Domain Users(ドメインユーザー)であれば、このシステムを利用可能
uchikoshi1
NT AUTHORITY\Authenticated Users
NT AUTHORITY\INTERACTIVE
user02 …user02はUsersグループのメンバー
コマンドは正常に終了しました。
C:\>
この2種類のローカルグループは、所属しているメンバー(アカウント)にいくらか違いはあるが、それ以外は特に違いはないようだ。では、管理者と標準ユーザーの権限の違いはいったいどこから来るのだろうか?
netコマンドやコントロールパネルのユーザー管理ツールなどでユーザーアカウントやグループアカウントを見ても、そのアカウントの持つ権限の違いは分からない。なぜなら、アカウントに対する権限は、ユーザーアカウントデータベースとは別の場所で定義されているからだ。
そのため、アカウントの名前(表示名)と、そのアカウントが持つ実際の権限には関係がない。例えばAdministrators(管理者)やDomain Admins(ドメイン管理者)などのアカウントは、Admin(管理者)という名前が付いてるから強力な権限を持っているのではなく、これらのアカウントに対して強力な権限が付与されているからさまざまな特権操作が可能になっているのである。だからアカウントは、その表示名を変更しても権限は変わらないし、逆に付与する権限を変更すると、同じ名前でも可能な操作が変わることになる。
アカウントごとに、どのような操作が可能かという情報は、Windows OSでは「特権(privileges)」もしくは「権利(rights)」と呼ばれている。例えば、シャットダウンやバックアップなど、特定のシステム操作を許可するのが特権、ローカルログオンをしてもよい/もしくはしてはいけない、というような操作の可否を決めるのが権利だが、両者の区別はあまり重要ではないだろう。
Windows OSにおいて、あるアカウントに対してどのような特権/権利が割り当てられているかは「ローカル セキュリティ ポリシー(secpol.msc)」ツールで[セキュリティの設定]−[ローカル ポリシー]−[ユーザー権利の割り当て]を開けば分かる(Windows OSのエディションによってはこのツールは使えない)。グループポリシーの場合は「グループポリシーの管理(gpmc.msc)」ツールでグループポリシーオブジェクトを開き、[コンピューターの構成]−[ポリシー]−[Windowsの設定]−[セキュリティの設定]−[ローカル ポリシー]−[ユーザー権利の割り当て]を開く。
これを見ると分かるように、例えば「システムのシャットダウン」という特権は、「Administrators」「Server Operators」「Print Operators」「Backup Operators」グループに所属しているユーザーなら実行可能だ。しかし「Users」や「Domain Users」グループには許可されていないので、このシステムでは標準ユーザーではシャットダウンできない。もっとも、これはWindows Serverの場合であり、クライアントWindows OSならここにUsersグループが含まれているので、一般ユーザーでも自分のPCならシャットダウンできる。
ユーザーがシステムにログオンするとユーザーセッションが開始されるが、そのときアカウントの種類に応じて、どの特権が利用可能かを表す「トークン(token)」情報が作成される。そしてシステムが新しいプロセスを起動したり、特別な操作などを実行しようとすると、そのトークンに基づいて、実行を許可するか、拒否するかが判定される。
現在実行中のユーザーに対して、どのような特権が割り当てられているかは「whoami /priv」コマンドで確認できる。
これを見ると、5つの特権しか表示されていないが、これはWindows Vista以降で導入されたUACのメカニズムによって抑制されている状態だからだ。管理者権限でコマンドプロンプトを開いて実行すると、次のようにもっと多くの特権が確認できる。
ユーザーセッションとプロセス、トークン、特権、UACなどの関係については、以下の記事なども参照していただきたい。
ユーザーアカウントを作成する場合、Windows OSでは日本語のユーザー名を付けることができるが、これはトラブルの元なので、極力避けることが望ましい。Windows PCをセットアップする場合、最初にユーザー名を入力する画面が表示されるが、ついついここで日本語名を入れてしまいがちなので(特に家庭用の個人向けPCの場合)、注意する。
ユーザー名を日本語にすると、ユーザープロファイルのフォルダー名が日本語(2bytes文字などとも呼ばれる)になり、アプリケーションによってはこれが正しくハンドリングできずにエラーになることがあるからだ(特に海外製のアプリケーションを日本語化したものなどでよくある)。
C:\Users\山田太郎\Documents>dir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は 3A6B-E19E です
C:\Users\山田太郎\Documents のディレクトリ ……フォルダー名が日本語になっている
2014/05/31 12:30 <DIR> .
2014/05/31 12:30 <DIR> ..
2014/05/31 12:30 297 新しいファイル.rtf
1 個のファイル 297 バイト
2 個のディレクトリ 452,645,564,416 バイトの空き領域
C:\Users\山田太郎\Documents>
このような事情があるため、ユーザー名を付ける場合は、英数字と許可された記号のみでユーザーアカウントを作成し、その「フルネーム」に日本語の名前を割り当てておくとよいだろう。Active Directoryの場合は、「姓」や「名」は日本語でもよいが、「ユーザー ログオン名」では日本語(や空白など)は避けるようにする。
Copyright© Digital Advantage Corp. All Rights Reserved.