##### SUMMARY
Support become unprivileged user on macOS without `allow_world_readable_tmpfiles=true`

##### ISSUE TYPE
- Feature Idea

##### COMPONENT NAME
action, shell, and copy

##### ADDITIONAL INFORMATION
When using become where the login user and the become user are both unprivileged, Ansible attempts to securely change file permissions to only allow the become user to read the files. It uses `setfacl` and falls back to `chown`. Both of these fail on macOS, as there is no `setfacl` command and `chown` is not permitted.

macOS actually does provide the same functionality as `setfacl`, using `chmod +a`. The syntax is a bit different from `setfacl`, but it should be able to do what Ansible needs.
task_vars = dict()
        
        if module_name is None:
            module_name = self._task.action
        if module_args is None:
            module_args = self._task.args
        self._update_module_args(module_name, module_args, task_vars)
        
        
        
        remove_async_dir = None
        if wrap_async or self._task.async_val:
            env_async_dir = [e for e in self._task.environment if
                             "ANSIBLE_ASYNC_DIR" in e]
            if len(env_async_dir) > 0:
                msg = "Setting the async dir from the environment keyword " \
                      "ANSIBLE_ASYNC_DIR is deprecated. Set the async_dir " \
                      "shell option instead"
                self._display.deprecated(msg, "2.12", collection_name='ansible.builtin')
            else:
                
                
                
                async_dir = self.get_shell_option('async_dir', default="~/.ansible_async")
                remove_async_dir = len(self._task.environment)
                self._task.environment.append({"ANSIBLE_ASYNC_DIR": async_dir})
        
        (module_style, shebang, module_data, module_path) = self._configure_module(module_name=module_name, module_args=module_args, task_vars=task_vars)
        display.vvv("Using module file %s" % module_path)
        if not shebang and module_style != 'binary':