オブジェクトを識別するSIDとは?:Tech TIPS
Windows NT系のOSでは、ユーザー・アカウントなどのオブジェクトはすべて、表に表示される名前ではなく、SIDという内部的な数値を使って管理されている。通常、SIDがユーザーの目に触れることはないが、アカウントの削除やドメイン・コントローラへの接続トラブルなどの事態が発生すると、SIDがそのまま表示される場合がある。
対象OS:Windows NT/Windows 2000/Windows XP/Windows Server 2003
解説
Windows NT系のOS(Windows 2000やWindows XP、Windows Server 2003などを含む)では、ユーザー・アカウントやグループなどは、管理ツールに表示される「名前」ではなく、「SID(Security Identifier。セキュリティ識別子)」と呼ばれる一意のID番号列を使用して管理されている。具体的には「S-1-5-21-917266621-1342861121-1792158721-512」のような数字列のことを指す。システムを新規にセットアップし直さない限り、同じSIDが使われることはない。
そのため、例えばユーザー「kojii」を削除し、あらためて同じ「kojii」という名前(とパスワード)を持つユーザーを再作成しても、内部的にはこれらは別々のユーザーとして扱われる。すると、再作成したユーザーに対しては、削除したユーザーと同じアクセス権が設定されることはないし、アクセス権の設定や所属するグループなど、すべての設定について、最初からやり直す必要がある。
こうした仕様になっている理由は、少し考えてみれば、容易に理解できる。何かの事情でユーザー・ログオン名を変更しなければならない事態が発生する可能性は存在するし、改姓そのほかの事情でユーザーの表示名を変更しなければならないケースも多い。もし、表示されている名前で個々のユーザーを識別していると、ログオン名や表示名を変更する際に、Windows OS側からは別のユーザーと見なされてしまい、混乱の元となる。
ただし、SIDを使って管理されているというのは、あくまでWindows OSの内部的な話であって、通常、ユーザーがSIDを直接目にする機会はめったにない。あくまで、ユーザー・アカウントの管理ツールやアクセス権の設定画面で表示されるのは、ユーザー・ログオン名、あるいはアカウントごとに設定されている表示名の方だ。しかし、何かのはずみで、表示されないはずのSIDが画面に表示されてしまうことがある。
例えば、ネットワークのトラブルなどでActive Directoryドメインのドメイン・コントローラに接続できないケース、あるいは、あるユーザー・アカウントに対してアクセス権の付与やグループへの所属を指定した後で、そのユーザーを削除した場合には、SIDの情報が画面に表示されてしまう。
SIDが画面に表示されてしまった例
これは、あるファイルのプロパティ画面に含まれているアクセス権の設定画面だが、削除されたユーザー・アカウントに対するアクセス権が存在するため、そのユーザーが「不明なアカウント」として表示され、さらにSID(の数字列)がカッコ内に表示されている。
(1)存在するユーザーに対するアクセス権設定では、このように正しく名前で表示される。
(2)アクセス権を設定した後で、設定した相手のユーザー・アカウントを削除すると、「不明なアカウント」と表示され、さらにSIDがカッコ内に表示される。
(3)これがSIDの実際の数値列。各アカウントは、実際にはこの数値で認識されており、表示名などを変更してもこのSIDは変わらない。
このSIDは、上の図にもあるように、「S-1-5-21-4194…」といった値を持っている。また、OSをセットアップした時点で自動的に作成される「組み込みアカウント」については、以下の表にあるように、固定したSID(「Well Known SID=よく知られているSID」と呼ばれる)が割り当てられている。もし、何かの拍子に生のSIDの数値列がそのまま表示されてしまった際に、以下の表のいずれかに該当すれば、それは組み込みアカウントのSIDと判断できる。それ以外のものは、ユーザーが独自に作成したものと判断できる。
名称 | SID | 説明 | |
---|---|---|---|
Universal Well Known SID | |||
Everyone | S-1-1-0 | Windows Server 2003では、認証を受けたユーザーとGuestの総称。それ以前のOSでは、さらに匿名アクセスのユーザーも含む | |
Creator Owner | S-1-3-0 | オブジェクトの作成者。アクセス制御エントリ(ACE)は継承可能で、システムによってオブジェクトの現在の所有者に振り替えられる | |
Creator Group | S-1-3-1 | オブジェクト作成者のグループ。アクセス制御エントリ(ACE)は継承可能で、システムによってオブジェクトの現在の所有者が所属するプライマリ・グループに振り替えられる | |
Well Known SID | |||
Dialup | S-1-5-1 | ダイヤルアップ接続を経由してログオンしたすべてのユーザー | |
Network | S-1-5-2 | ネットワーク経由でログオンしているすべてのユーザー。対話的ログオンを行うユーザー用のアクセス・トークンは、このSIDに含まれない | |
Batch | S-1-5-3 | タスク・スケジューラでスケジュールされた場合のような、「バッチ・キュー」を介してログオンしているユーザー | |
Interactive | S-1-5-4 | ローカル・あるいはリモート・デスクトップを介して、コンピュータに対話的にログオンしているユーザー | |
Service | S-1-5-6 | サービスとしてシステムにログオンしている、すべてのセキュリティ・プリンシパルの集合体を意味するグループ。グループのメンバーは、OSによって管理される | |
Anonymous Logon | S-1-5-7 | ユーザー名とパスワードの情報を送信せず、匿名でネットワーク経由の接続を行っているユーザー | |
Self(Principal Self) | S-1-5-10 | Active Directoryドメインにおける、ユーザー・グループ・コンピュータの3種類のオブジェクトの所有者 | |
Authenticated Users | S-1-5-11 | ユーザー名とパスワードの情報を入力して認証を受けた、すべてのユーザー。なお、Guestアカウントにパスワードが設定されている場合、そのGuestアカウントは含まれない | |
Terminal Server Users | S-1-5-13 | Terminal Services Ver.4.0のアプリケーション互換モードを使用してログオンしている、すべてのユーザー | |
This Organization | S-1-5-15 | 同じフォレスト、あるいはドメインに所属しているユーザーの総称。「Other Organization」SIDが存在しない場合に、認証サーバによって設定される | |
Local System | S-1-5-18 | OSによって使用されるサービス・アカウント | |
Other Organization | S-1-5-1000 | ほかのフォレスト、あるいはドメインに所属しているユーザーの総称 | |
ローカル・グループSID | |||
Administrators | S-1-5-32-544 | Administrator(管理者)グループ | |
Users | S-1-5-32-545 | ユーザー・グループ | |
Guests | S-1-5-32-546 | ゲスト・グループ | |
Account Operators | S-1-5-32-548 | アカウント管理者グループ | |
Server Operators | S-1-5-32-549 | サーバ管理者グループ | |
Print Operators | S-1-5-32-550 | プリンタ管理者グループ | |
Backup Operators | S-1-5-32-551 | バックアップ管理者グループ | |
Replicator | S-1-5-32-552 | 複製管理者グループ | |
ドメインSID | |||
Administrator | S-1-5-21-……-500 | ドメインの管理者。SIDの「……」の部分には、ドメインごとに異なる任意の数値列が入る | |
Guest | S-1-5-21-……-501 | ドメインのゲスト・アカウント | |
Domain Admins | S-1-5-21-……-512 | ドメインの管理者グループ | |
Domain Users | S-1-5-21-……-513 | ドメインのユーザー・グループ | |
Domain Guests | S-1-5-21-……-514 | ドメインのゲスト・グループ | |
定義済みSID(一部) Windows NT系OSでは、ユーザーやグループ・アカウントを内部的にはSID(セキュリティ識別子)と呼ばれる数値で表現している。ここに挙げたSIDはWindows OSであらかじめ定義されているSIDであり、環境によらず同じである(Windows OSのバージョンによっては定義されていないものもある)。管理者が作成したユーザーやグループなどはさらに長い数字が組み合わされたSIDを持っている(SIDの長さは可変長)。OSのバージョンによっては、これ以外にも多くのSIDが定義されている。実際のSIDの値は、Windows Server 2003のwhoami.exeコマンド(Windows XPの場合はSupport Tools、Windows 2000の場合はResource Kitにそれぞれ収録されている)などで確認することができる。 |
なお、通常は発生しないはずの現象だが、ドメインにおいて複数のオブジェクトに同じSIDが割り当てられる事故(SIDの重複事故)が発生した場合、以下の手順で重複を解消できる。
- コマンド・プロンプトを起動し、AD管理管理ツールntdsutil.exeを起動するために「ntdsutil」と入力する。するとntdsutilコマンドのプロンプトが表示される。
- ntdsutilコマンドのプロンプトで、「security account management」と入力する。
- 表示されたプロンプトで「connect to server <サーバ名>」と入力する。この操作により、操作対象となるサーバに接続される。
- 続いて「cleanup duplicate sid」と入力する。これにより、重複したSIDが削除されたことを示すメッセージが表示される。
- 「q」(または「quit」)を2回入力して、ntdsutilコマンドを終了する。
■関連リンク
- SID Values For Default Windows NT Installations[英語](マイクロソフト サポート技術情報 - 163846)
- Well-known security identifiers in Windows operating systems[英語](マイクロソフト サポート技術情報 - 243330)
- Security Identifiers Technical Reference[英語](マイクロソフト MSDN)
- Well-known SIDs[英語](マイクロソフト MSDN)
■更新履歴
【2013/03/25】表「定義済みSID(一部)」において、ローカル・グループSIDを「S-1-2-……」と記していましたが、正しくは「S-1-5-……」でした。お詫びして訂正いたします。
【2003/06/28】初版公開。
■この記事と関連性の高い別の記事
- 環境の複製にはnewsidではなくsysprepを利用する(TIPS)
- icacls/subinaclでアクセス制御リストからメンバーを削除する(TIPS)
- Windows XPで変わったユーザー/コンピュータ/グループの選択方法(TIPS)
- WindowsのwhoamiコマンドでユーザーのSIDや権利を調査する(TIPS)
- sysprepで環境複製用のマスターイメージを作成する(Windows XP/Server 2003編)(TIPS)
Copyright© Digital Advantage Corp. All Rights Reserved.