<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.default, li.default, div.default
        {mso-style-name:default;
        mso-style-priority:99;
        margin:0in;
        margin-bottom:.0001pt;
        text-autospace:none;
        font-size:12.0pt;
        font-family:"Verdana","sans-serif";
        color:black;}
p.Default0, li.Default0, div.Default0
        {mso-style-name:Default;
        mso-style-priority:99;
        margin:0in;
        margin-bottom:.0001pt;
        text-autospace:none;
        font-size:12.0pt;
        font-family:"Verdana","sans-serif";
        color:black;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Arial","sans-serif";
        color:windowtext;}
span.EmailStyle21
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle23
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
 /* List Definitions */
 @list l0
        {mso-list-id:-1270745994;
        mso-list-type:hybrid;
        mso-list-template-ids:-728253145 -1 -1 -1 -1 -1 -1 -1 -1 -1;}
@list l0:level1
        {mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l0:level2
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l0:level3
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l0:level4
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l0:level5
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l0:level6
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l0:level7
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l0:level8
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l0:level9
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l1
        {mso-list-id:-858251549;
        mso-list-type:hybrid;
        mso-list-template-ids:-956588191 -1 -1 -1 -1 -1 -1 -1 -1 -1;}
@list l1:level1
        {mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l1:level2
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l1:level3
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l1:level4
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l1:level5
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l1:level6
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l1:level7
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l1:level8
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l1:level9
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l2
        {mso-list-id:1860509040;
        mso-list-type:hybrid;
        mso-list-template-ids:1104515017 -1 -1 -1 -1 -1 -1 -1 -1 -1;}
@list l2:level1
        {mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l2:level2
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l2:level3
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l2:level4
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l2:level5
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l2:level6
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l2:level7
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l2:level8
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
@list l2:level9
        {mso-level-start-at:0;
        mso-level-text:"";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:0in;
        text-indent:0in;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Hi Nadezhda:<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>I just realized that the table in my previous email may not appear
correctly. So, I am attaching a PDF version of my reply. Please let me know if
you have any difficulty reading it.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Regards,<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Obaid Farooqi<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Sr. Support Escalation Engineer | Microsoft<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Obaid Farooqi <br>
<b>Sent:</b> Tuesday, August 11, 2009 10:02 AM<br>
<b>To:</b> Nadezhda Ivanova<br>
<b>Cc:</b> pfif@tridgell.net; cifs-protocol@samba.org<br>
<b>Subject:</b> RE: Help regarding the security descriptor creation algorithms<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><span style='color:#1F497D'>Hi Nadezhda:<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>We have finished our
investigation on your question about ComputeInheritedACLfromParent algorithm.
The documentation is in progress for a newer version of the algorithm that will
appear in a future version of MS-DTYP.<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>For your implementation, you can
use the following rules to derive inherited ACE’s from the parent object.<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>There are seven flags that can
appear in an ACE. Of the seven flags, the following pertains to inheritance:<o:p></o:p></span></p>

<p class=Default0><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>CI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>CONTAINER_INHERIT_ACE
<o:p></o:p></span></p>

<p class=Default0><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>OI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>OBJECT_INHERIT_ACE <o:p></o:p></span></p>

<p class=Default0><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>NP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>NO_PROPAGATE_INHERIT_ACE
<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>IO</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INHERIT_ONLY_ACE<span
style='color:#1F497D'><o:p></o:p></span></p>

<p class=Default0><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>INHERITED_ACE
<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>IO and ID do not play a part
when it comes to making decisions about inheritance. ID flag is added to any
ACE that is inherited to mention the fact that it was inherited. IO flag is
used to render an ACE ineffective for the child that inherits the ACE. An ACE
that has IO flag can be inherited but the decision is based on other flags, if
present. As such, the following table mostly ignores ID and IO flags. &nbsp;The
following table outlines what would be the flags of the inherited ACE based on
the flags that parent has.<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
 style='border-collapse:collapse'>
 <tr>
  <td width=213 valign=top style='width:159.6pt;border:solid black 1.0pt;
  border-bottom:double windowtext 1.5pt;background:#DFDFDF;padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>Parent ACE Flags<o:p></o:p></span></p>
  </td>
  <td width=213 valign=top style='width:159.6pt;border-top:solid black 1.0pt;
  border-left:none;border-bottom:double windowtext 1.5pt;border-right:solid black 1.0pt;
  background:#DFDFDF;padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>Child Container Object<o:p></o:p></span></p>
  </td>
  <td width=213 valign=top style='width:159.6pt;border-top:solid black 1.0pt;
  border-left:none;border-bottom:double windowtext 1.5pt;border-right:solid black 1.0pt;
  background:#DFDFDF;padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>Child Leaf Object<o:p></o:p></span></p>
  </td>
 </tr>
 <tr>
  <td width=213 valign=top style='width:159.6pt;border:solid black 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>No Flags, IO<o:p></o:p></span></p>
  </td>
  <td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>No Inheritance<o:p></o:p></span></p>
  </td>
  <td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>No Inheritance<o:p></o:p></span></p>
  </td>
 </tr>
 <tr>
  <td width=213 valign=top style='width:159.6pt;border:solid black 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>OI<o:p></o:p></span></p>
  </td>
  <td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>IO,OI<o:p></o:p></span></p>
  </td>
  <td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>Inherited, No flags<o:p></o:p></span></p>
  </td>
 </tr>
 <tr>
  <td width=213 valign=top style='width:159.6pt;border:solid black 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>OI,NP<o:p></o:p></span></p>
  </td>
  <td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>No Inheritance<o:p></o:p></span></p>
  </td>
  <td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>Inherited, No flags<o:p></o:p></span></p>
  </td>
 </tr>
 <tr>
  <td width=213 valign=top style='width:159.6pt;border:solid black 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>CI<o:p></o:p></span></p>
  </td>
  <td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>CI<o:p></o:p></span></p>
  </td>
  <td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>No Inheritance<o:p></o:p></span></p>
  </td>
 </tr>
 <tr>
  <td width=213 valign=top style='width:159.6pt;border:solid black 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>CI,NP<o:p></o:p></span></p>
  </td>
  <td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>Inherited, No flags<o:p></o:p></span></p>
  </td>
  <td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>No Inheritance<o:p></o:p></span></p>
  </td>
 </tr>
 <tr>
  <td width=213 valign=top style='width:159.6pt;border:solid black 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>CI,OI<o:p></o:p></span></p>
  </td>
  <td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>IO,CI,OI<o:p></o:p></span></p>
  </td>
  <td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>Inherited, No flags<o:p></o:p></span></p>
  </td>
 </tr>
 <tr>
  <td width=213 valign=top style='width:159.6pt;border:solid black 1.0pt;
  border-top:none;padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>CI,OI,NP<o:p></o:p></span></p>
  </td>
  <td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>Inherited, No flags<o:p></o:p></span></p>
  </td>
  <td width=213 valign=top style='width:159.6pt;border-top:none;border-left:
  none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'>
  <p class=MsoNormal><span style='color:#1F497D'>Inherited, No flags<o:p></o:p></span></p>
  </td>
 </tr>
</table>

<p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>For the cases in which a
container inherits an ACE that is both effective on the container and
inheritable by its descendents, the container may inherit two ACEs. This occurs
when inheritable ACE contains generic &nbsp;information. The container inherits
an ACE with an additional IO flag with generic information and an
effective-only ACE in which the generic information has been mapped.<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>The following page at MSDN also
has similar information that you may find helpful:<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><a
href="http://msdn.microsoft.com/en-us/library/aa374924(VS.85).aspx">http://msdn.microsoft.com/en-us/library/aa374924(VS.85).aspx</a><o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>Please let me know if this
answers your question. If yes, then I’ll consider this issue resolved.<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>Regards,<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>Obaid Farooqi<o:p></o:p></span></p>

<p class=MsoNormal><span style='color:#1F497D'>Sr. Support Escalation Engineer |
Microsoft</span><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Nadezhda Ivanova
[mailto:nadezhda.ivanova@postpath.com] <br>
<b>Sent:</b> Friday, July 10, 2009 6:09 AM<br>
<b>To:</b> Interoperability Documentation Help<br>
<b>Cc:</b> pfif@tridgell.net; cifs-protocol@samba.org<br>
<b>Subject:</b> Help regarding the security descriptor creation algorithms<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Hi,<o:p></o:p></p>

<p class=default><span style='font-family:"Times New Roman","serif"'>I have
been working on implementing correct nTSecurityDeascriptor creation in the
directory service of Samba 4, and have come upon a problem in the <b>ComputeInheritedACLfromParent
&nbsp;</b>subroutine described in MS-DTYP 2.5.2.6. The way the algorithm is
described, the purpose of this algorithm is to determine which ACE’s from an
object’s parent are to be inherited by the new object actively, and which are
to be inherited only. The <b>ComputeInheritedACLfromParent </b>as described,
walks the parent ACL twice. The first time it determines the active inherited
ACE’s, the second time the ones that are inherited but inactive. <o:p></o:p></span></p>

<p class=default><span style='font-family:"Times New Roman","serif"'>I have
been testing our implementation with the CN=Schema partition, as the attributes
and objects by default are not given a security descriptor during creation, and
the defaultSecurityDescriptor of attribute-Schema is empty DACL and SACL.<o:p></o:p></span></p>

<p class=default><span style='font-family:"Times New Roman","serif"'>So, they
inherit all their DACL ACE’s from their parent, CN=Schema. <o:p></o:p></span></p>

<p class=default><span style='font-size:10.0pt'><o:p>&nbsp;</o:p></span></p>

<p class=default><span style='font-size:10.0pt'>In a Win2008R2, CN=Schema has
three inheritable DACL ACE’s: <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>&nbsp;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>(A;CI;RPLCLORC;;;AU)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>(A;CI;RPWPCRCCLCLORCWOWDSW;;;SA)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>(A;CI;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><b>ComputeInheritedACLfromParent has the following
arguments:</b><o:p></o:p></p>

<p class=MsoNormal style='margin-left:0in;text-indent:0in;mso-list:l2 level1 lfo2;
text-autospace:none'><![if !supportLists]><span style='color:black'><span
style='mso-list:Ignore'><span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='color:black'></span><span
style='color:black'> <i>ACL</i>: <b>ACL </b>that contains the parent's ACEs
from which to compute the inherited <b>ACL</b>. <o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:0in;text-indent:0in;mso-list:l2 level1 lfo2;
text-autospace:none'><![if !supportLists]><span style='color:black'><span
style='mso-list:Ignore'><span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='color:black'></span><span
style='color:black'> <i>IsContainerObject</i>: TRUE if the object is a
container, FALSE otherwise. <o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:0in;text-indent:0in;mso-list:l2 level1 lfo2;
text-autospace:none'><![if !supportLists]><span style='color:black'><span
style='mso-list:Ignore'><span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='color:black'></span><span
style='color:black'> <i>ObjectTypes</i>: Array of GUIDs for the object type
being created. <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif"'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal>So if we invoke the <b>ComputeInheritedACLfromParent </b>with
the above DACL,and &nbsp;isConatinerObject = true (According to MS-ADTS 7.1.3,
true is always the value), the first walk of the input <o:p></o:p></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'><o:p>&nbsp;</o:p></span></p>

<p class=default><span style='font-family:"Arial","sans-serif"'>Initialize
ExplicitACL to Empty ACL <o:p></o:p></span></p>

<p class=default><span style='font-family:"Arial","sans-serif"'>FOR each ACE in
ACL DO <o:p></o:p></span></p>

<p class=default style='text-indent:.5in'><span style='font-family:"Arial","sans-serif"'>IF
ACE.Flags contains INHERIT_ONLY <o:p></o:p></span></p>

<p class=default style='text-indent:.5in'><span style='font-family:"Arial","sans-serif"'>THEN
<o:p></o:p></span></p>

<p class=default style='margin-left:99.0pt;text-indent:-.25in;mso-list:l1 level2 lfo4'><![if !supportLists]><span
style='font-family:"Arial","sans-serif"'><span style='mso-list:Ignore'><span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='font-family:"Arial","sans-serif"'>CONTINUE
<o:p></o:p></span></p>

<p class=default style='text-indent:.5in'><span style='font-family:"Arial","sans-serif"'>ENDIF
<o:p></o:p></span></p>

<p class=default><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></p>

<p class=default style='text-indent:.5in'><span style='font-family:"Arial","sans-serif"'>IF(((ACE.Flags
contains CONTAINER_INHERIT) AND <o:p></o:p></span></p>

<p class=default style='margin-left:99.0pt;text-indent:-.25in;mso-list:l1 level2 lfo4'><![if !supportLists]><span
style='font-family:"Arial","sans-serif"'><span style='mso-list:Ignore'><span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='font-family:"Arial","sans-serif"'>(IsContainerObject
= TRUE))OR <o:p></o:p></span></p>

<p class=default style='margin-left:0in;text-indent:0in;mso-list:l1 level4 lfo4'><![if !supportLists]><span
style='font-family:"Arial","sans-serif"'><span style='mso-list:Ignore'><span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='font-family:"Arial","sans-serif"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((ACE.Flags
contains OBJECT_INHERIT) AND (IsContainerObject = FALSE))) <o:p></o:p></span></p>

<p class=default style='text-indent:.5in'><span style='font-family:"Arial","sans-serif"'>THEN
<o:p></o:p></span></p>

<p class=default style='margin-left:.5in;text-indent:.5in'><span
style='font-family:"Arial","sans-serif"'>CASE ACE.Type OF <o:p></o:p></span></p>

<p class=default style='margin-left:1.0in;text-indent:.5in'><span
style='font-family:"Arial","sans-serif"'>ALLOW: <o:p></o:p></span></p>

<p class=default style='margin-left:1.0in;text-indent:.5in'><span
style='font-family:"Arial","sans-serif"'>DENY: <o:p></o:p></span></p>

<p class=default style='margin-left:1.5in;text-indent:.5in'><span
style='font-family:"Arial","sans-serif"'>Set NewACE to ACE <o:p></o:p></span></p>

<p class=default style='margin-left:1.5in;text-indent:.5in'><span
style='font-family:"Arial","sans-serif"'>Set NewACE.Flags to INHERITED <o:p></o:p></span></p>

<p class=default style='margin-left:1.5in;text-indent:.5in'><span
style='font-family:"Arial","sans-serif"'>Append NewACE to ExplicitACL <o:p></o:p></span></p>

<p class=default style='margin-left:1.0in;text-indent:.5in'><span
style='font-family:"Arial","sans-serif"'>OBJECT_ALLOW: <o:p></o:p></span></p>

<p class=default style='margin-left:1.0in;text-indent:.5in'><span
style='font-family:"Arial","sans-serif"'>OBJECT_DENY: <o:p></o:p></span></p>

<p class=default style='margin-left:1.5in;text-indent:.5in'><span
style='font-family:"Arial","sans-serif"'>IF (ObjectTypes contains
ACE.ObjectGUID) THEN <o:p></o:p></span></p>

<p class=default style='margin-left:2.0in;text-indent:.5in'><span
style='font-family:"Arial","sans-serif"'>Set NewACE to ACE <o:p></o:p></span></p>

<p class=default style='margin-left:2.0in;text-indent:.5in'><span
style='font-family:"Arial","sans-serif"'>Set NewACE.Flags to INHERITED <o:p></o:p></span></p>

<p class=default style='margin-left:2.0in;text-indent:.5in'><span
style='font-family:"Arial","sans-serif"'>Append NewACE to ExplicitACL <o:p></o:p></span></p>

<p class=default style='margin-left:1.5in;text-indent:.5in'><span
style='font-family:"Arial","sans-serif"'>ENDIF <o:p></o:p></span></p>

<p class=default style='margin-left:.5in;text-indent:.5in'><span
style='font-family:"Arial","sans-serif"'>ENDCASE <o:p></o:p></span></p>

<p class=default style='text-indent:.5in'><span style='font-family:"Arial","sans-serif"'>ENDIF
<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-family:"Arial","sans-serif"'>END
FOR<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'>Will give:<o:p></o:p></p>

<p class=MsoNormal style='text-autospace:none'><span style='color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='color:black'>D:AI(A;CIID;RPLCLORC;;;AU)(A;CIID;RPWPCRCCLCLORCWOWDSW;;;SA)(A;CIID;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='color:black'>Which
is as expected, as this is the DACL of all attributes and classes in Win 2008.<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='color:black'>However,
the algorithm then walks the input a second time:<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-family:"Arial","sans-serif";
color:black'>Initialize InheritableACL to Empty ACL <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-family:"Arial","sans-serif";
color:black'>IF (IsContainerObject = TRUE) THEN &nbsp;//<b><i>In our case this
is always true<o:p></o:p></i></b></span></p>

<p class=MsoNormal style='text-indent:.5in;text-autospace:none'><span
style='font-family:"Arial","sans-serif";color:black'>FOR each ACE in ACL DO <o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:.5in;text-indent:.5in;text-autospace:
none'><span style='font-family:"Arial","sans-serif";color:black'>IF ACE.Flags
contains NO_PROPAGATE THEN &nbsp;//This flag is not set<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:1.0in;text-indent:.5in;text-autospace:
none'><span style='font-family:"Arial","sans-serif";color:black'>CONTINUE <o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:.5in;text-indent:.5in;text-autospace:
none'><span style='font-family:"Arial","sans-serif";color:black'>ENDIF <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-family:"Arial","sans-serif";
color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:.5in;text-indent:.5in;text-autospace:
none'><span style='font-family:"Arial","sans-serif";color:black'>IF((ACE.Flags contains
CONTAINER_INHERIT) OR <o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:1.0in;text-indent:.5in;text-autospace:
none'><span style='font-family:"Arial","sans-serif";color:black'>(ACE.Flags
contains OBJECT_INHERIT)) <o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:.5in;text-indent:.5in;text-autospace:
none'><span style='font-family:"Arial","sans-serif";color:black'>THEN <o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:1.0in;text-indent:.5in;text-autospace:
none'><span style='font-family:"Arial","sans-serif";color:black'>Set NewACE to
ACE <o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:1.0in;text-indent:.5in;text-autospace:
none'><span style='font-family:"Arial","sans-serif";color:black'>Add INHERITED
to NewACE.Flags <o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:1.0in;text-indent:.5in;text-autospace:
none'><span style='font-family:"Arial","sans-serif";color:black'>Add
INHERIT_ONLY to NewACE.Flags <o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:1.0in;text-indent:.5in;text-autospace:
none'><span style='font-family:"Arial","sans-serif";color:black'>Append NewACE
to InheritableACL <o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:.5in;text-indent:.5in;text-autospace:
none'><span style='font-family:"Arial","sans-serif";color:black'>ENDIF <o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:0in;text-indent:0in;mso-list:l0 level1 lfo6;
text-autospace:none'><![if !supportLists]><span style='font-family:"Arial","sans-serif";
color:black'><span style='mso-list:Ignore'><span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span></span><![endif]><span style='font-family:"Arial","sans-serif";
color:black'>END FOR <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-family:"Arial","sans-serif";
color:black'>ENDIF</span><span style='font-size:8.0pt;font-family:"Courier New";
color:black'> <o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='font-size:8.0pt;
font-family:"Courier New";color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='color:black'>This
second loop yields:<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='color:black'>(A;CIIOID;RPLCLORC;;;AU)(A;CIIOID;RPWPCRCCLCLORCWOWDSW;;;SA)(A;CIIOID;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='color:black'>&nbsp;<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='color:black'>Which
after:<o:p></o:p></span></p>

<p class=MsoNormal style='text-autospace:none'><span style='color:black'>RETURN
concatenation of ExplicitACL and InheritableACL <o:p></o:p></span></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Makes the final DACL look like: <o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>D:AI(A;CIID;RPLCLORC;;;AU)(A;CIID;RPWPCRCCLCLORCWOWDSW;;;SA)(A;CIID;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;CIIOID;RPLCLORC;;;AU)(A;CIIOID;RPWPCRCCLCLORCWOWDSW;;;SA)(A;CIIOID;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>So ACE’s are duplicated.<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>However, an attribute’s DACL in Win2008 does not have these last
three ACE’s, so I am obviously missing something. How should the flow actually
go with this same example in order to avoid this duplication? Or am I providing
the wrong argument?<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>Best Regards,<o:p></o:p></p>

<p class=MsoNormal>Nadezhda Ivanova<o:p></o:p></p>

<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 width=543
 style='width:407.25pt'>
 <tr>
  <td colspan=3 style='padding:0in 0in 0in 0in'>
  <p class=MsoNormal><img border=0 width=110 height=73 id="_x0000_i1025"
  src="cid:image001.gif@01CA1A6E.74E80D50"><o:p></o:p></p>
  </td>
 </tr>
 <tr>
  <td nowrap valign=top style='padding:0in 0in 11.25pt .25in'>
  <p><strong><span style='font-size:8.5pt;font-family:"Arial","sans-serif";
  color:#666666'>Nadezhda Ivanova</span></strong><span style='font-size:8.5pt;
  font-family:"Arial","sans-serif";color:#666666'><br>
  <strong><span style='font-family:"Arial","sans-serif"'>Software Engineer</span></strong><br>
  <strong><span style='font-family:"Arial","sans-serif"'>Software Development</span></strong><b><br>
  </b><br>
  <a href="mailto:nadezhda.ivanova@postpath.com"><span style='font-family:"Times New Roman","serif";
  color:#666666'>nadezhda.ivanova@postpath.com</span></a><o:p></o:p></span></p>
  </td>
  <td nowrap valign=top style='padding:0in 0in 7.5pt 15.0pt'>
  <p style='margin-bottom:12.0pt'><strong><span style='font-size:8.5pt;
  font-family:"Arial","sans-serif";color:#666666'>CISCO SYSTEMS BULGARIA EOOD</span></strong><span
  style='font-size:8.5pt;font-family:"Arial","sans-serif";color:#666666'><br>
  18 Macedonia Blvd. Sofia 1606<br>
  Bulgaria<br>
  <a href="http://www.cisco.com/global/BG/"><span style='font-family:"Times New Roman","serif";
  color:#666666'>Cisco home page</span></a><o:p></o:p></span></p>
  </td>
  <td width=200 style='width:150.0pt;padding:0in 0in 0in 0in'>
  <p class=MsoNormal>&nbsp;<o:p></o:p></p>
  </td>
 </tr>
 <tr>
  <td style='padding:0in .25in 0in .25in'>
  <p class=MsoNormal><span style='font-size:7.5pt;font-family:"Arial","sans-serif";
  color:#009900'><img border=0 width=18 height=19 id="_x0000_i1026"
  src="cid:image002.gif@01CA1A6E.74E80D50" alt="Think before you print.">Think
  before you print.<o:p></o:p></span></p>
  </td>
  <td width=232 colspan=2 style='width:174.0pt;padding:0in 0in 0in 0in'>
  <p class=MsoNormal>&nbsp;<o:p></o:p></p>
  </td>
 </tr>
</table>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

</body>

</html>