diff --git a/lib/ansible/runner/__init__.py b/lib/ansible/runner/__init__.py index 6a43a5916ac..cd1de901b7e 100644 --- a/lib/ansible/runner/__init__.py +++ b/lib/ansible/runner/__init__.py @@ -210,10 +210,10 @@ class Runner(object): args = utils.jsonify(args,format=True) (remote_module_path, is_new_style) = self._copy_module(conn, tmp, module_name, inject) - cmd = "chmod +x %s" % remote_module_path + cmd = "chmod u+x %s" % remote_module_path if self.sudo and self.sudo_user != 'root': # deal with possible umask issues once sudo'ed to other user - cmd = "chmod 555 %s" % remote_module_path + cmd = "chmod a+rx %s" % remote_module_path self._low_level_exec_command(conn, cmd, tmp) cmd = "" @@ -266,7 +266,7 @@ class Runner(object): module_args += " #USE_SHELL" (module_path, is_new_style) = self._copy_module(conn, tmp, module_name, inject) - self._low_level_exec_command(conn, "chmod +x %s" % module_path, tmp) + self._low_level_exec_command(conn, "chmod a+rx %s" % module_path, tmp) return self._execute_module(conn, tmp, 'async_wrapper', module_args, async_module=module_path, @@ -315,8 +315,11 @@ class Runner(object): exec_rc = None if local_md5 != remote_md5: # transfer the file to a remote tmp location - tmp_src = tmp + source.split('/')[-1] + tmp_src = tmp + os.path.basename(source) conn.put_file(source, tmp_src) + # fix file permissions when the copy is done as a different user + if self.sudo and self.sudo_user: + self._low_level_exec_command(conn, "chmod a+r %s" % tmp_src, tmp) # run the copy module self.module_args = "%s src=%s" % (self.module_args, tmp_src) @@ -669,7 +672,7 @@ class Runner(object): cmd = 'mkdir -p %s' % basetmp if self.remote_user != 'root': - cmd += ' && chmod a+x %s' % basetmp + cmd += ' && chmod a+rx %s' % basetmp cmd += ' && echo %s' % basetmp result = self._low_level_exec_command(conn, cmd, None, sudoable=False)