mirror of https://github.com/ansible/ansible.git
Fix remote_tmp when become with non admin user (#42396)
* Fix tmpdir on non root become - also avoid exception if tmpdir and remote_tmp are None - give 'None' on deescalation so tempfile will fallback to it's default behaviour and use system dirs - fix issue with bad tempdir (not existing/not createable/not writeable) i.e nobody and ~/.ansible/tmp - added tests for blockfile case * Revert "Temporarily revert c119d54" This reverts commitpull/42147/merge5c614a59a6
. * changes based on PR feedback and changelog fragment * changes based on the review * Fix tmpdir when makedirs failed so we just use the system tmp * Let missing remote_tmp fail If remote_tmp is missing then there's something more basic wrong in the communication from the controller to the module-side. It's better to be alerted in this case than to silently ignore it. jborean and I have independently checked what happens if the user sets ansible_remote_tmp to empty string and !!null and both cases work fine. (null is turned into a default value controller-side. empty string triggers the warning because it is probably not a directory that the become user is able to use). (cherry picked from commit8bdd04c147
)
parent
27e57e41d1
commit
69a36a3fa7
@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- fix the remote tmp folder permissions issue when becoming a non admin user - https://github.com/ansible/ansible/issues/41340, https://github.com/ansible/ansible/issues/42117
|
@ -0,0 +1 @@
|
||||
posix/ci/group3
|
@ -0,0 +1,26 @@
|
||||
- name: Test temp dir on de escalation
|
||||
hosts: testhost
|
||||
gather_facts: false
|
||||
become: yes
|
||||
tasks:
|
||||
- name: create test user
|
||||
user: name=tmptest state=present
|
||||
|
||||
- name: execute test case
|
||||
become_user: tmptest
|
||||
block:
|
||||
- name: Test case from issue 41340
|
||||
blockinfile:
|
||||
create: yes
|
||||
block: |
|
||||
export foo=bar
|
||||
marker: "# {mark} Here there be a marker"
|
||||
dest: /tmp/testing.txt
|
||||
mode: 0644
|
||||
always:
|
||||
- name: clean up file
|
||||
file: path=/tmp/testing.txt state=absent
|
||||
|
||||
- name: clean up test user
|
||||
user: name=tmptest state=absent
|
||||
become_user: root
|
@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ux
|
||||
|
||||
ansible-playbook -i ../../inventory playbook.yml -v "$@"
|
Loading…
Reference in New Issue