##### 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
```
previous_atime = os.stat(b_path).st_atime
            if mtime is None:
                mtime = previous_mtime
            elif mtime is Sentinel:
                mtime = time.time()
            if atime is None:
                atime = previous_atime
            elif atime is Sentinel:
                atime = time.time()
            
            if mtime == previous_mtime and atime == previous_atime:
                return False
            set_time = (atime, mtime)
        os.utime(b_path, set_time)
        if diff is not None:
            if 'before' not in diff:
                diff['before'] = {}
            if 'after' not in diff:
                diff['after'] = {}
            if mtime != previous_mtime:
                diff['before']['mtime'] = previous_mtime
                diff['after']['mtime'] = mtime
            if atime != previous_atime:
                diff['before']['atime'] = previous_atime
                diff['after']['atime'] = atime
    except OSError as e:
        raise AnsibleModuleError(results={'msg': 'Error while updating modification or access time: %s'
                                          % to_native(e, nonstring='simplerepr'), 'path': path})
    return True
def keep_backward_compatibility_on_timestamps(parameter, state):