<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=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-ligatures:standardcontextual;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></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="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi Douglas:<o:p></o:p></p>
<p class="MsoNormal">I tested and no, “(“ is not required after “!”<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I gave the following SDDL to apply to a file and I worked as intended:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">D:(D;OICI;GA;;;BG)(D;OICI;GA;;;AN)(A; OICI; GRGWGX;;; AU)(XA;;FX;;;S-1-1-0;(<a href="mailto:!@User.Title">!@User.Title</a> == "PM"))(A;OICI;GA;;;BA)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’ll file a bug against MS-DTYP to fix the ABNF.<o:p></o:p></p>
<p class="MsoNormal">Please le me know if this doesn’t answer your question.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="mso-ligatures:none">Regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">Obaid Farooqi<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">Escalation Engineer | Microsoft<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">=====================================<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">From: Douglas Bagnall <a href="mailto:douglas.bagnall@catalyst.net.nz">
douglas.bagnall@catalyst.net.nz</a> <o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">Sent: Tuesday, March 14, 2023 3:52 PM<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">To: Interoperability Documentation Help
<a href="mailto:dochelp@microsoft.com">dochelp@microsoft.com</a>; <a href="mailto:cifs-protocol@lists.samba.org">
cifs-protocol@lists.samba.org</a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">Subject: [EXTERNAL] [MS-DTYP] Conditional ACE SDDL: NOT syntax clarification.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">hi Dochelp,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">In the ABNF for SDDL, in 2.5.1.1, the only place the NOT operator "!" is mentioned is in the cond-expr line:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">       cond-expr = term /                                              \<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">                   term [wspace] ("||" / "&&" ) [wspace] cond-expr /   \<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">                   (["!"] [wspace] "(" cond-expr ")")<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">(We have already established in 2302020040006024 /<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><a href="https://lists.samba.org/archive/cifs-protocol/2023-February/003947.html">https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.samba.org%2Farchive%2Fcifs-protocol%2F2023-February%2F003947.html&data=05%7C01%7CHungChun.Yu%40microsoft.com%7Cc522a8d1924a435eb82a08db24ded039%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638144311654849856%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=I2xaSLXR2DWUmNeMZ8fhAoOT1XI%2Fs4uVe1PXjWNyoj8%3D&reserved=0</a>
 that the second part with the "||" or "&&" is erroneous -- this question is about the third part, with the '["!"]').<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">So that says the only place a "!" can occur is in front of a parenthetical expression; you can't write "!A", you need to say "!(A)".<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">That would be OK, and I have been working on that basis, but then in 2.5.1.3 "Parentheses and Order of Precedence", the "!" operator is given a middling precedence, below that of e.g. "==". And that makes
 me wonder about an expression like<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">    !(A) == B<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">Since == has higher precedence than !, it will grab the (A) before the ! can, and the expression is effectively "!(A == B)"; if you mean to do it the other way, you need to write "(!(A)) == B". But that
 looks silly. It makes me doubt that the semantic meaning is so divorced from the syntactic rule, and leads me to think the ABNF is taking another descriptive short cut.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">Does '!' really always need to be followed by '('?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">cheers,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-ligatures:none">Douglas<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>