mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Set selinux context on file after shutil.move in atomic_move()
This is intended to fix #2810. It sets the context of the tmp_dest file after shutil.move() operation and before os.rename(). This should retain the selinux context of the file across moves.
This commit is contained in:
parent
2cf30148ba
commit
50e94e4a2f
1 changed files with 2 additions and 2 deletions
|
@ -820,11 +820,9 @@ class AnsibleModule(object):
|
||||||
raise
|
raise
|
||||||
if self.selinux_enabled():
|
if self.selinux_enabled():
|
||||||
context = self.selinux_context(dest)
|
context = self.selinux_context(dest)
|
||||||
self.set_context_if_different(src, context, False)
|
|
||||||
else:
|
else:
|
||||||
if self.selinux_enabled():
|
if self.selinux_enabled():
|
||||||
context = self.selinux_default_context(dest)
|
context = self.selinux_default_context(dest)
|
||||||
self.set_context_if_different(src, context, False)
|
|
||||||
# Ensure file is on same partition to make replacement atomic
|
# Ensure file is on same partition to make replacement atomic
|
||||||
dest_dir = os.path.dirname(dest)
|
dest_dir = os.path.dirname(dest)
|
||||||
dest_file = os.path.basename(dest)
|
dest_file = os.path.basename(dest)
|
||||||
|
@ -839,6 +837,8 @@ class AnsibleModule(object):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
shutil.move(src, tmp_dest)
|
shutil.move(src, tmp_dest)
|
||||||
|
if self.selinux_enabled():
|
||||||
|
self.set_context_if_different(tmp_dest, context, False)
|
||||||
os.rename(tmp_dest, dest)
|
os.rename(tmp_dest, dest)
|
||||||
rc = True
|
rc = True
|
||||||
except (shutil.Error, OSError, IOError), e:
|
except (shutil.Error, OSError, IOError), e:
|
||||||
|
|
Loading…
Reference in a new issue