diff options
-rw-r--r-- | source_control/git | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/source_control/git b/source_control/git index 6af4bd71..98b37ae0 100644 --- a/source_control/git +++ b/source_control/git @@ -181,7 +181,15 @@ def get_submodule_update_params(module, git_path, cwd): def write_ssh_wrapper(): module_dir = get_module_path() - fd, wrapper_path = tempfile.mkstemp(prefix=module_dir + '/') + try: + # make sure we have full permission to the module_dir, which + # may not be the case if we're sudo'ing to a non-root user + if os.access(module_dir, os.W_OK|os.R_OK|os.X_OK): + fd, wrapper_path = tempfile.mkstemp(prefix=module_dir + '/') + else: + raise OSError + except (IOError, OSError): + fd, wrapper_path = tempfile.mkstemp() fh = os.fdopen(fd, 'w+b') template = """#!/bin/sh if [ -z "$GIT_SSH_OPTS" ]; then @@ -505,6 +513,7 @@ def main(): if key_file or ssh_opts: ssh_wrapper = write_ssh_wrapper() set_git_ssh(ssh_wrapper, key_file, ssh_opts) + module.add_cleanup_file(path=ssh_wrapper) # add the git repo's hostkey if module.params['ssh_opts'] is not None: |