[Freeipa-devel] [PATCH 0286] Sysrestore: copy files instead of moving them to avoid SELinux issues
Alexander Bokovoy
abokovoy at redhat.com
Fri Jul 17 11:04:16 UTC 2015
On Wed, 15 Jul 2015, Martin Basti wrote:
>On 15/07/15 18:01, Alexander Bokovoy wrote:
>>On Wed, 15 Jul 2015, Martin Basti wrote:
>>>Moved files temporarily exist without a proper SElinux context
>>>which causes issues when running SSSD/ntpd tries to work with
>>>files.
>>>
>>>https://fedorahosted.org/freeipa/ticket/4923
>>>
>>>Patch attached.
>>>
>>>--
>>>Martin Basti
>>>
>>
>>>From a86424429eea3bede519284e2d986c4fad8755f8 Mon Sep 17 00:00:00 2001
>>>From: Martin Basti <mbasti at redhat.com>
>>>Date: Wed, 15 Jul 2015 16:20:59 +0200
>>>Subject: [PATCH] sysrestore: copy files instead of moving them to avoind
>>>SELinux issues
>>>
>>>Copying files restores SELinux context.
>>>
>>>https://fedorahosted.org/freeipa/ticket/4923
>>>---
>>>ipapython/sysrestore.py | 12 ++++++------
>>>1 file changed, 6 insertions(+), 6 deletions(-)
>>>
>>>diff --git a/ipapython/sysrestore.py b/ipapython/sysrestore.py
>>>index c058ff7c04d4604ba96c2a4ece68d476b5b6491f..354897240b542c2671b662a4fdad1a089652f899
>>>100644
>>>--- a/ipapython/sysrestore.py
>>>+++ b/ipapython/sysrestore.py
>>>@@ -186,12 +186,12 @@ class FileStore:
>>> if new_path is not None:
>>> path = new_path
>>>
>>>- shutil.move(backup_path, path)
>>>+ shutil.copy(backup_path, path) # SELinux needs copy
>>>+ os.remove(backup_path)
>>>+
>>> os.chown(path, int(uid), int(gid))
>>> os.chmod(path, int(mode))
>>>
>>>- tasks.restore_context(path)
>>>-
>>Please keep restorecon calls because we might have a case when old label
>>was wrong in the backup.
>>
>>
>>> del self.files[filename]
>>> self.save()
>>>
>>>@@ -217,12 +217,12 @@ class FileStore:
>>> root_logger.debug(" -> Not restoring - '%s'
>>>doesn't exist", backup_path)
>>> continue
>>>
>>>- shutil.move(backup_path, path)
>>>+ shutil.copy(backup_path, path) # SELinux needs copy
>>>+ os.remove(backup_path)
>>>+
>>> os.chown(path, int(uid), int(gid))
>>> os.chmod(path, int(mode))
>>>
>>>- tasks.restore_context(path)
>>>-
>>Same here.
>>
>
>Sorry I don't get it.
>Label is not copied from backup_file.
>I changed Selinux context, then copy to original location and context
>was restored when file does not exist.
>
>Do you mean case when the target file has different label than it
>should have?
Yes, it could happen quite often.
--
/ Alexander Bokovoy
More information about the Freeipa-devel
mailing list