# salt.modules.win_dacl

Manage DACLs on Windows

depends:

  - winreg Python module

salt.modules.win_dacl.add_ace(path, objectType, user, permission, acetype, propagation)

  add an ace to an object

  path: path to the object (i.e. c:\temp\file, HKEY_LOCAL_MACHINE\SOFTWARE\KEY, etc) user: user to add permission: permissions for the user acetype: either allow/deny for each user/permission (ALLOW, DENY) propagation: how the ACE applies to children for Registry Keys and Directories(KEY, KEY&SUBKEYS, SUBKEYS)

  CLI Example:

      allow domain\fakeuser full control on HKLM\\SOFTWARE\\somekey, propagate to this key and subkeys
          salt 'myminion' win_dacl.add_ace 'HKEY_LOCAL_MACHINE\\SOFTWARE\\somekey' 'Registry' 'domain\fakeuser' 'FULLCONTROL' 'ALLOW' 'KEY&SUBKEYS'

salt.modules.win_dacl.check_ace(path, objectType, user, permission=None, acetype=None, propagation=None, exactPermissionMatch=False)

  Checks a path to verify the ACE (access control entry) specified exists

  Parameters:

    - path -- path to the file/reg key

    - objectType -- The type of object (FILE, DIRECTORY, REGISTRY)

    - user -- user that the ACL is for

    - permission -- permission to test for (READ, FULLCONTROL, etc)

    - acetype -- the type of ACE (ALLOW or DENY)

    - propagation -- the propagation type of the ACE (FILES, FOLDERS, KEY, KEY&SUBKEYS, SUBKEYS, etc)

    - exactPermissionMatch -- the ACL must match exactly, IE if READ is specified, the user must have READ exactly and not FULLCONTROL (which also has the READ permission obviously)

  Returns (dict): 'Exists' true if the ACE exists, false if it does not

  CLI Example:

      salt 'minion-id' win_dacl.check_ace c:  emp directory <username> fullcontrol

salt.modules.win_dacl.check_inheritance(path, objectType, user=None)

  Check a specified path to verify if inheritance is enabled

  Parameters:

    - path -- path of the registry key or file system object to check

    - objectType -- The type of object (FILE, DIRECTORY, REGISTRY)

    - user -- if provided, will consider only the ACEs for that user

  Returns (bool): 'Inheritance' of True/False

  CLI Example:

      salt 'minion-id' win_dacl.check_inheritance c:  emp directory <username>

class salt.modules.win_dacl.daclConstants

  DACL constants used throughout the module

  getAceTypeBit(t)

    returns the acetype bit of a text value

  getAceTypeText(t)

    returns the textual representation of a acetype bit

  getObjectTypeBit(t)

    returns the bit value of the string object type

  getPermissionBit(t, m)

    returns a permission bit of the string permission value for the specified object type

  getPermissionText(t, m)

    returns the permission textual representation of a specified permission bit/object type

  getPropagationBit(t, p)

    returns the propagation bit of a text value

  getPropagationText(t, p)

    returns the textual representation of a propagation bit

  getSecurityHkey(s)

    returns the necessary string value for an HKEY for the win32security module

  processPath(path, objectType)
    processes a path/object type combo and returns:

      registry types with the correct HKEY text representation files/directories with environment variables expanded

salt.modules.win_dacl.disable_inheritance(path, objectType, copy=True)

  Disable inheritance on an object

  Parameters:

    - path -- The path to the object

    - objectType -- The type of object (FILE, DIRECTORY, REGISTRY)

    - copy -- True will copy the Inherited ACEs to the DACL before disabling inheritance

  Returns (dict): A dictionary containing the results

  CLI Example:

      salt 'minion-id' win_dacl.disable_inheritance c:        emp directory

salt.modules.win_dacl.enable_inheritance(path, objectType, clear=False)

  enable/disable inheritance on an object

  Parameters:

    - path -- The path to the object

    - objectType -- The type of object (FILE, DIRECTORY, REGISTRY)

    - clear -- True will remove non-Inherited ACEs from the ACL

  Returns (dict): A dictionary containing the results

  CLI Example:

      salt 'minion-id' win_dacl.enable_inheritance c: emp directory

salt.modules.win_dacl.get(path, objectType, user=None)

  Get the ACL of an object. Will filter by user if one is provided.

  Parameters:

    - path -- The path to the object

    - objectType -- The type of object (FILE, DIRECTORY, REGISTRY)

    - user -- A user name to filter by

  Returns (dict): A dictionary containing the ACL

  CLI Example:

      salt 'minion-id' win_dacl.get c:        emp directory

salt.modules.win_dacl.rm_ace(path, objectType, user, permission=None, acetype=None, propagation=None)

  remove an ace to an object

  path: path to the object (i.e. c:\temp\file, HKEY_LOCAL_MACHINE\SOFTWARE\KEY, etc) user: user to remove permission: permissions for the user acetypes: either allow/deny for each user/permission (ALLOW, DENY) propagation: how the ACE applies to children for Registry Keys and Directories(KEY, KEY&SUBKEYS, SUBKEYS)

  If any of the optional parameters are omitted (or set to None) they act as wildcards.

  CLI Example:

      remove allow domain\fakeuser full control on HKLM\\SOFTWARE\\somekey propagated to this key and subkeys
          salt 'myminion' win_dacl.rm_ace 'Registry' 'HKEY_LOCAL_MACHINE\\SOFTWARE\\somekey' 'domain\fakeuser' 'FULLCONTROL' 'ALLOW' 'KEY&SUBKEYS'