##### 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.
"""Helper to get an option from a plugin without having to use
        the try/except dance everywhere to set a default
        """
        try:
            return plugin.get_option(option)
        except (AttributeError, KeyError):
            return default
    def get_become_option(self, option, default=None):
        return self.get_plugin_option(self._connection.become, option, default=default)
    def get_connection_option(self, option, default=None):
        return self.get_plugin_option(self._connection, option, default=default)
    def get_shell_option(self, option, default=None):
        return self.get_plugin_option(self._connection._shell, option, default=default)
    def _remote_file_exists(self, path):
        cmd = self._connection._shell.exists(path)
        result = self._low_level_execute_command(cmd=cmd, sudoable=True)
        if result['rc'] == 0:
            return True
        return False
    def _configure_module(self, module_name, module_args, task_vars):
        '''
        Handles the loading and templating of the module code through the
        modify_module() function.
        '''