diff --git a/certbot-apache/certbot_apache/_internal/apache_util.py b/certbot-apache/certbot_apache/_internal/apache_util.py index fde812478..c0e57c3f5 100644 --- a/certbot-apache/certbot_apache/_internal/apache_util.py +++ b/certbot-apache/certbot_apache/_internal/apache_util.py @@ -19,6 +19,9 @@ from certbot import util from certbot.compat import os +# TEMPORARY WORKAROUND +import os as stdlib_os + logger = logging.getLogger(__name__) @@ -76,9 +79,19 @@ def safe_copy(source, target): copied or the target file hash does not match with the source file. """ + orig_perms = None + try: + orig_perms = stdlib_os.stat(target) + except OSError: + # target file was not found + pass + for _ in range(3): try: shutil.copy2(source, target) + if orig_perms: + stdlib_os.chown(target, orig_perms.st_uid) + stdlib_os.chmod(target, oct(orig_perms.st_mode & 0o777)) except IOError as e: emsg = "Could not copy {} to {}: {}".format( source, target, e