オブジェクトを識別するSIDとは?Tech TIPS

Windows NT系のOSでは、ユーザー・アカウントなどのオブジェクトはすべて、表に表示される名前ではなく、SIDという内部的な数値を使って管理されている。通常、SIDがユーザーの目に触れることはないが、アカウントの削除やドメイン・コントローラへの接続トラブルなどの事態が発生すると、SIDがそのまま表示される場合がある。

» 2013年03月25日 05時00分 公開
[井上孝司]
「Tech TIPS」のインデックス

連載目次

対象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が画面に表示されてしまった例
これは、あるファイルのプロパティ画面に含まれているアクセス権の設定画面だが、削除されたユーザー・アカウントに対するアクセス権が存在するため、そのユーザーが「不明なアカウント」として表示され、さらに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の重複事故)が発生した場合、以下の手順で重複を解消できる。

  1. コマンド・プロンプトを起動し、AD管理管理ツールntdsutil.exeを起動するために「ntdsutil」と入力する。するとntdsutilコマンドのプロンプトが表示される。
  2. ntdsutilコマンドのプロンプトで、「security account management」と入力する。
  3. 表示されたプロンプトで「connect to server <サーバ名>」と入力する。この操作により、操作対象となるサーバに接続される。
  4. 続いて「cleanup duplicate sid」と入力する。これにより、重複したSIDが削除されたことを示すメッセージが表示される。
  5. 「q」(または「quit」)を2回入力して、ntdsutilコマンドを終了する。

■関連リンク


■更新履歴

【2013/03/25】表「定義済みSID(一部)」において、ローカル・グループSIDを「S-1-2-……」と記していましたが、正しくは「S-1-5-……」でした。お詫びして訂正いたします。

【2003/06/28】初版公開。


「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

AI for エンジニアリング
「サプライチェーン攻撃」対策
1P情シスのための脆弱性管理/対策の現実解
OSSのサプライチェーン管理、取るべきアクションとは
Microsoft & Windows最前線2024
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。