この記事はなに?
Windows の SDDL (Security Descriptor Definition Language) を解読します。
Lacさんの記事 の焼き直しです。
SDDL文字列の構造
SDDLは、いくつかの決められたプレフィックスを持つ文字列を、区切りなしに並べたひと続きの文字列です。
O:BAG:SYD:P(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;FA;;;LA)
癖強いっすね
SDDLのプレフィックス
プレフィックスには、以下の4つがあります。
プレフィックス | 意味 |
---|---|
O: | Owner (所有者) |
G: | Group (プライマリグループ) |
D: | Discretionary Access Control List (DACL) |
S: | System Access Control List |
S: は、一般ユーザーには関係ないらしいので、ここでは無視です。
先の例を分解すると、こうなります。
項目 | 値 |
---|---|
所有者 (O:) | BA |
プライマリグループ (G:) | SY |
DACL (D:) | P(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;FA;;;LA) |
所有者やプライマリグループを表す文字列
所有者やプライマリグループは、SIDか、BA や SY のような、あらかじめ決められている文字列だそうです。
先の例は、このような意味です。
文字列 | 意味 |
---|---|
BA | Built-in administrators. |
SY | Local system. |
DACLの構造
プレフィックス D: で始まる DACL の構造です。
フラグ(ACE文字列1)(ACE文字列2)...(ACE文字列n)
フラグで始まり、カッコで囲まれたACE文字列が羅列されます。
先の例を分解するとこうなります。
項目 | 値 |
---|---|
フラグ | P |
ACE文字列1 | A;OICI;FA;;;SY |
ACE文字列2 | A;OICI;FA;;;BA |
ACE文字列3 | A;OICI;FA;;;LA |
DACLのフラグ
以下の4つのうちのひとつ、あるいは複数を区切りなしに並べた文字列です。
フラグ | 意味 |
---|---|
P | SE_DACL_PROTECTED フラグがセットされている |
AR | SE_DACL_AUTO_INHERIT_REQ フラグがセットされている |
AI | SE_DACL_AUTO_INHERITED フラグがセットされている |
NO_ACCESS_CONTROL | ACLがNull |
意味わかりませんが、重要ではないらしいので、スルーします。
ACE文字列の構造
ACE文字列は、以下の項目をセミコロンで区切って並べた文字列です(その意味は後述)。
- ACEタイプ
- ACEフラグ
- 権限
- オブジェクトのGUID
- 継承オブジェクトのGUID
- アカウントのSID
先の例を分解すると、こうなります。
項目 | 値 |
---|---|
ACEタイプ | A |
ACEフラグ | OI と CI |
権限 | FA |
オブジェクトのGUID | (なし) |
継承オブジェクトのGUID | (なし) |
アカウントのSID | SY |
ACEタイプ
あらかじめ決まっている文字列です。A が許可、D が拒否です。他にもいろいろあります。
先の例ですと、A なので許可を意味します。
ACEフラグ
ひとつまたは複数のフラグを区切りなしに並べた文字列です。そのACEがどのように扱われるのかを決めます。
ファイルシステムでよく使うのはこれくらいでしょうか。
フラグ | 意味 |
---|---|
CI | サブフォルダのみに影響 |
OI | ファイルのみに影響 |
IO | フォルダ自身には影響しない |
NP | サブフォルダに継承させない |
先の例ですと、OICI なので、フォルダ自身、サブフォルダ、ファイルに影響します。
権限
0x で始まる16進数か、あらかじめ決められている文字列の羅列になります。
オブジェクトのGUID
ある特定のACE構造体 (Win32 プログラムで使うやつ)の ObjectType メンバーに格納する値です。
たぶん、どんなACEを記述するかによって、値の意味が変わるのだと思われます。
継承オブジェクトのGUID
ある特定のACE構造体 (Win32 プログラムで使うやつ)の InheritedObjectType メンバーに格納する値です。
たぶん、どんなACEを記述するかによって、値の意味が変わるのだと思われます。
アカウントのSID
このACEが適用されるアカウントのSIDです。
参考リンクまとめ
記事内に書いたリンク先のまとめです。