chmod not working

HI, I have a play that SHOULD copy a file over from my server to a Windows box AND set permissions to 660 (notice I have tried both modes below separately):

win_copy:

src: /ansible/playbook/foo.foo

dest: C:\mydir\foo.foo

state: file

mode: “ug+rw”

OR mode: 0660

The play runs w/o fail.

Unfortunately, though, when I stat the file I see:

$ stat foo.foo

File: foo.foo

Size: 17 Blocks: 1 IO Block: 65536 regular file

Device: d22da4adh/3526206637d Inode: 562949953957599 Links: 1

Access: (0755/-rwxr-xr-x) Uid: ( 544/Administrators) Gid: (197121/ None)

Access: 2018-01-03 14:17:25.989300300 -0800

Modify: 2018-01-03 14:17:20.822769500 -0800

Change: 2018-01-03 14:17:20.822769500 -0800

Birth: 2018-01-03 14:17:25.989300300 -0800

Any idea WHY?

From what I can tell of the documentation, win_copy does not support a mode argument. It’s likely just being ignored, due to how the argument parsing in windows modules is currently handled.

http://docs.ansible.com/ansible/latest/win_copy_module.html

Wow, that’s something HOPEFULLY will be supported in the future. Thank you.

Windows does not use the standard user/group/all permissions that are in use with most unix servers so the mode option most likely will never be supported. Windows uses ACLs https://msdn.microsoft.com/en-us/library/windows/desktop/aa374872(v=vs.85).aspx?f=255&MSPPError=-2147217396 to set permissions on files and folders and these are a lot more complicated than the mode permissions.

While you can’t do it in one task with win_copy, the win_acl http://docs.ansible.com/ansible/latest/win_acl_module.html module is designed to set ACL’s on a file/folder to achieve a similar result.

Thanks

Jordan

Thanks Jordan,
I am trying win_acl:

  • name: chmod foo.foo

win_acl:

user: user

path: C:\cygwin\etc\foo.foo

type: allow

state: present

rights: Read,Write

BUT–

When I stat I still get:

Access: (0755/-rwxr-xr-x) Uid: ( 544/Administrators) Gid: (197121/ None)

Please note I’ve tried using user: Administrators instead of the specific user.

Any idea why it doesn’t work?