##### SUMMARY
When installing a collection, all files are created with mode 0600. This is caused by the way the collection .tar.gz file is extracted: https://github.com/ansible/ansible/blob/d3ec31f8d5683926aa6a05bb573d9929a6266fac/lib/ansible/galaxy/collection.py#L1076-L1090 The file created by `tempfile.NamedTemporaryFile()` seems to have mode `0600` and is simply moved to the final destination without a following `os.chmod`.

(See also this discussion: https://github.com/ansible-collections/community.general/pull/29#discussion_r396147440)

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
lib/ansible/galaxy/collection.py

##### ANSIBLE VERSION
```
2.9
2.10
```

err = "%s has the version '%s' but is being compared to '%s'" % (to_text(self), self.latest_version, remote_collection.latest_version)
            display.display(err)
            return
        modified_content = []
        
        expected_hash = _get_tar_file_hash(b_temp_tar_path, 'MANIFEST.json')
        self._verify_file_hash(b_collection_path, 'MANIFEST.json', expected_hash, modified_content)
        manifest = _get_json_from_tar_file(b_temp_tar_path, 'MANIFEST.json')
        
        file_manifest_data = manifest['file_manifest_file']
        file_manifest_filename = file_manifest_data['name']
        expected_hash = file_manifest_data['chksum_%s' % file_manifest_data['chksum_type']]
        
        self._verify_file_hash(b_collection_path, file_manifest_filename, expected_hash, modified_content)
        file_manifest = _get_json_from_tar_file(b_temp_tar_path, file_manifest_filename)
        
        for manifest_data in file_manifest['files']:
            if manifest_data['ftype'] == 'file':
                expected_hash = manifest_data['chksum_%s' % manifest_data['chksum_type']]
                self._verify_file_hash(b_collection_path, manifest_data['name'], expected_hash, modified_content)
        if modified_content:
            display.display("Collection %s contains modified content in the following files:" % to_text(self))
            display.display(to_text(self))
            display.vvv(to_text(self.b_path))
            for content_change in modified_content:
                display.display('    %s' % content_change.filename)
                display.vvv("    Expected: %s\n    Found: %s" % (content_change.expected, content_change.installed))
        else:
            display.vvv("Successfully verified that checksums for '%s:%s' match the remote collection" % (to_text(self), self.latest_version))
    def _verify_file_hash(self, b_path, filename, expected_hash, error_queue):