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の場合は、「姓」や「名」は日本語でもよいが、「ユーザー ログオン名」では日本語(や空白など)は避けるようにする。
ユーザーアカウントには、その「スコープ」(有効範囲)の違いに応じて「ローカルユーザーアカウント」と「ドメインユーザーアカウント」の2種類がある。
これはコンピューターごとに個別に作成されるユーザーアカウントである。ドメインに参加していないスタンドアロンのコンピューターを使う場合は、このアカウントでログオンして利用することになる。複数のコンピューターを持っている場合は、それぞれのコンピューター上でアカウントを作成しなければならないし、デスクトップ環境や設定なども共通化できず(OSやインストールされているアプリケーションなどの違いにより、何でも共通化できるわけではないが)、手間が掛かる。
これは、Active DirectoryドメインやWindows NTドメインなどで作成できるアカウントである。ドメインに参加しているコンピューター全体で共通して利用できるため、コンピューターの台数が増えても、どのコンピューターでも同じアカウント、同じパスワードでログオンできる。OSやインストールされているアプリケーションなどにもよるが、デスクトップ環境や設定なども自動的に共通化される。
ユーザーアカウントにローカルアカウントとドメインアカウントの違いがあるように、グループにも用途やスコープの違いにより、次のような種類がある。詳細についてはTIPS「グループ・アカウントの種類を知る」を参照していただきたい。
グループには、その用途や利用できる場所などに応じて、次の3つの種類がある。
セキュリティグループと配布グループには、そのスコープに応じて次の3つの種類がある。
Windows OSであらかじめ用意されているデフォルトのアカウント(組み込みアカウント)にはさまざまなものがあるし、OSのバージョンによっても変わるので、今回は省略する。必要なら以下のリンクなどを参照していただきたい。
「SID(Security ID)」とは、アカウントを識別するためにWindows OS内部で使用されている識別子である。ユーザー名をいくら変更しても、そのユーザーに割り当てられている権限やユーザープロファイル(ユーザー環境や設定など)が変わらないのは、このSIDが変わらないからである。ただしSIDはアカウントを削除すると消滅するため、たとえ後で同じ名前やパスワードでアカウントを作成しても、以前の環境は維持・復元されず、別のユーザーとして扱われる。SIDは管理画面のさまざまな場面で目にすることになるので(特にActive Directory関連で)、今後詳しく解説する。
ユーザーに割り当てられているSIDは、例えば「whoami /user」や「whoami /all」コマンドなどで確認できる。SIDについては、次のTIPSも参照していただきたい。
ここまでの説明で触れてきたように、ユーザーアカウントやグループアカウントの調査・確認には、コントロールパネルのユーザー管理ツールや「コンピューターの管理」ツールの他、コマンドプロンプトなら「net user」や「net localgroup」コマンドなどが利用できる。ドメインに参加しているコンピューターなら、「Active Directoryユーザーとコンピューター」管理ツールや「net user /domain」「net localgroup /domain」などで確認できる。
これ以外にも、WMICというコマンドラインツールなら、「useraccount」や「group」といったサブコマンドで一覧を取得できる。WMICの使い方については、次のTIPSが参考になる。
PowerShellなら「Get-CimInstance -ClassName Win32_UserAccount」「Get-CimInstance -ClassName Win32_GroupUser」などで一覧を取得できる。PowerShell自体の使い方については、次の連載記事が参考になる。
プログラムやバッチファイル、スクリプトなどでリモートのサーバーへ接続したり、リモートのリソースを使ったりする場合、ユーザー名とドメイン名、PC名をまとめて表現することがある。Windows OSではいくつかの方法があるので、用途やアプリケーションの使用などによって使い分けていただきたい。
ユーザー名の表記方法は「net use /?」コマンドで確認できる(TIPS「Windowsネットワークにおけるユーザー名とドメイン名の指定方法」も参照)。
C:\>net use /?
このコマンドの構文は次のとおりです:
NET USE
[デバイス名 | *] [\\コンピューター名\共有名[\ボリューム] [パスワード | *]]
[/USER:[ドメイン名\]ユーザー名] ……NTLM形式1
[/USER:[ドット付きのドメイン名\]ユーザー名] ……NTLM形式2
[/USER:[ユーザー名@ドット付きのドメイン名] ……UPN形式
[/SMARTCARD]
……(以下省略)……
これは最も基本的な表記方法である。ドメイン名(最大15文字のNetBIOS名)とユーザー名をバックスラッシュ記号で接続する。例えば「MYDOMAIN\USER01」のように指定する(大文字/小文字はどちらでもよい)。「NTLM(NT LAN-Manager)」形式とか「ダウンレベル」形式といい、最も古くから使われている形式なので、ほとんどの場合に問題なく利用できるだろう。
これはドメイン名の部分をFQDN形式のドメイン名(ドット表記のドメイン名)にした形式である。例えば「example.co.jp\user01」のように指定する。インターネット上のサーバーのFQDNドメイン名を指定する場合に使えるが、Active Directory上のアカウントを指定するなら、次のUPN形式を使うのが一般的だ。
「UPN(User Principal Name)」とは、ドメイン名とユーザー名を「@」で接続した、メールアドレスのような形式である。例えば「user01@example.co.jp」のように指定する。
これは少し特殊な使い方であり、どこでも使えるわけではないが、リモートデスクトップでログオンする場合などに、ログオン先コンピューター上のローカルなアカウントを簡単に指定する方法である。通常ドメインに参加しているコンピューターにログオンしようとすると、デフォルトではドメイン名が表示されていることがある。その状態で単にユーザーとパスワードを入力してログオンすると、ドメインにログオンしてしまう。だからローカルのコンピューターにログオンするなら、ローカルのコンピューター名を調べて、ユーザー名として「MYPC209AB334\user01」などと入力しなければならない。だがコンピューター名を知らない場合はこれは面倒だ。
このような場合は、ユーザー名欄の先頭に「.\」と入力する(「 .(ドット)」は自分自身を指し示す際によく使われる表現だ)。するとログオン先がドメイン名からローカルのコンピューターに自動的に切り替わる。後はユーザー名とパスワードを入力するだけでよい。
今回はユーザーアカウントについて解説した。次回はWindowsリソースの管理画面などでよく見かける、「ACL(アクセス制御リスト)」について取り上げる予定である。
Copyright© Digital Advantage Corp. All Rights Reserved.
Windows Server Insider 鬯ッ�ッ�ス�ッ�ス�ス�ス�ッ�ス�ス�ス�ス�ス�ス�ス�ョ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ォ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ェ鬯ッ�ッ�ス�ョ�ス�ス�ス�ッ鬮ッ蜈キ�ス�ケ�ス�ス�ス�コ�ス�ス�ス�ス�ス�ス�ス�サ鬩幢ス「�ス�ァ髫ー�ス竏橸ソス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ソ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�コ鬯ッ�ッ�ス�ョ�ス�ス�ス�」鬮ッ蜈キ�ス�ケ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�オ鬯ッ�ョ�ス�ォ�ス�ス�ス�エ鬩包スカ隰ォ�セ�ス�ス�ス�オ�ス�ス�ス�ス�ス�ス�ス�コ�ス�ス�ス�ス�ス�ス�ス�キ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ク�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�キ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ケ鬯ッ�ョ�ス�ォ�ス�ス�ス�エ鬯ョ�ョ隲幢スカ�ス�ス�ス�」�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ウ鬯ッ�ッ�ス�ッ�ス�ス�ス�ゥ鬮ッ譎「�ス�キ�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ァ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ュ鬯ッ�ッ�ス�ッ�ス�ス�ス�ゥ鬮ッ譎「�ス�キ�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�「鬯ッ�ョ�ス�ォ�ス�ス�ス�エ鬯ョ�ョ隲幢スカ�ス�ス�ス�」�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ウ鬯ッ�ッ�ス�ッ�ス�ス�ス�ゥ鬮ッ譎「�ス�キ�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�「�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ァ�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ス�ー