##### SUMMARY
In check mode, when using the file module to create a directory, if the directory already exists but the requested owner or group do not, the module will fail. I encountered this when running a playbook in check mode that creates a new user and changes the ownership of an existing directory.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
file

##### ANSIBLE VERSION
```
ansible 2.9.3
  config file = /home/nepeta/wip/lockss-playbook/ansible.cfg
  configured module search path = ['/home/nepeta/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.7/site-packages/ansible
  executable location = /bin/ansible
  python version = 3.7.6 (default, Jan 30 2020, 09:44:41) [GCC 9.2.1 20190827 (Red Hat 9.2.1-1)]
```

##### CONFIGURATION
```
```

##### OS / ENVIRONMENT
Fedora 31 host

##### STEPS TO REPRODUCE
Run the following playbook in check mode (`ansible-playbook demo.playbook.yml -C`):

```yaml
# demo.playbook.yml---

- hosts: localhost
  tasks:
    - name: Create user.
      user:
        name: notauser
        state: present

    - name: Task succeeds in check mode.
      file:
        path: /notadirectory
        state: directory
        owner: notauser

    - name: Task fails in check mode.
      file:
        path: /usr
        state: directory
        owner: notauser
```

##### EXPECTED RESULTS
I expect the module to skip the lookup of the user or group if it doesn't exist and to report the task as changed.

##### ACTUAL RESULTS
```
TASK [Create user.] ***********************************************************************************************************************
changed: [localhost]

TASK [Task succeeds in check mode.] *******************************************************************************************************
changed: [localhost]

TASK [Task fails in check mode.] **********************************************************************************************************
fatal: [localhost]: FAILED! => changed=false 
  gid: 0
  group: root
  mode: '0755'
  msg: 'chown failed: failed to look up user notauser'
  owner: root
  path: /usr
  secontext: system_u:object_r:usr_t:s0
  size: 4096
  state: directory
  uid: 0
```
raise AnsibleModuleError(
            results={'msg': "Could not recursively set attributes on %s. Original error was: '%s'" % (to_native(b_path), to_native(e))}
        )
    return changed
def initial_diff(path, state, prev_state):
    diff = {'before': {'path': path},
            'after': {'path': path},
            }
    if prev_state != state:
        diff['before']['state'] = prev_state
        diff['after']['state'] = state
        if state == 'absent' and prev_state == 'directory':
            walklist = {
                'directories': [],
                'files': [],
            }
            b_path = to_bytes(path, errors='surrogate_or_strict')
            for base_path, sub_folders, files in os.walk(b_path):
                for folder in sub_folders:
                    folderpath = os.path.join(base_path, folder)
                    walklist['directories'].append(folderpath)
                for filename in files:
                    filepath = os.path.join(base_path, filename)
                    walklist['files'].append(filepath)
            diff['before']['path_content'] = walklist
    return diff
#
#
def get_timestamp_for_time(formatted_time, time_format):