Skip to content

Commit

Permalink
Merge pull request #50887 from jalandis/windows-directory-test-owner-…
Browse files Browse the repository at this point in the history
…by-sid

Altering validation of windows directory ownership to compare SID instead of username
  • Loading branch information
dwoz committed Feb 14, 2019
2 parents 09df5cc + 4666155 commit edb607f
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 3 deletions.
8 changes: 5 additions & 3 deletions salt/states/file.py
Expand Up @@ -792,10 +792,12 @@ def _check_directory_win(name,
if not os.path.isdir(name):
changes = {name: {'directory': 'new'}}
else:
# Check owner
# Check owner by SID
if win_owner is not None:
owner = salt.utils.win_dacl.get_owner(name)
if not owner.lower() == win_owner.lower():
current_owner = salt.utils.win_dacl.get_owner(name)
current_owner_sid = salt.utils.win_functions.get_sid_from_name(current_owner)
expected_owner_sid = salt.utils.win_functions.get_sid_from_name(win_owner)
if not current_owner_sid == expected_owner_sid:
changes['owner'] = win_owner

# Check perms
Expand Down
25 changes: 25 additions & 0 deletions tests/integration/states/test_file.py
Expand Up @@ -888,6 +888,31 @@ def test_directory(self):
self.assertSaltTrueReturn(ret)
self.assertTrue(os.path.isdir(name))

def test_directory_is_idempotent(self):
'''
Ensure the file.directory state produces no changes when rerun.
'''
name = os.path.join(RUNTIME_VARS.TMP, 'a_dir_twice')

if IS_WINDOWS:
username = os.environ.get('USERNAME', 'Administrators')
domain = os.environ.get('USERDOMAIN', '')
fullname = '{0}\\{1}'.format(domain, username)

ret = self.run_state('file.directory', name=name, win_owner=fullname)
else:
ret = self.run_state('file.directory', name=name)

self.assertSaltTrueReturn(ret)

if IS_WINDOWS:
ret = self.run_state('file.directory', name=name, win_owner=username)
else:
ret = self.run_state('file.directory', name=name)

self.assertSaltTrueReturn(ret)
self.assertSaltStateChangesEqual(ret, {})

def test_directory_symlink_dry_run(self):
'''
Ensure that symlinks are followed when file.directory is run with
Expand Down

0 comments on commit edb607f

Please sign in to comment.