summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrasanna Kumar Kalever <prasanna.kalever@redhat.com>2020-05-29 15:05:35 +0530
committerPrasanna Kumar Kalever <prasanna.kalever@redhat.com>2020-06-01 12:09:08 +0530
commit3bdef6d1aa1f64c03816af68bd5fb2bd1bbb29be (patch)
tree53547f7a4e7f9eaad650d7563795b91183ddd9ca
parent1940a17986deaab92e6be395f20ee55dac0ac2bd (diff)
downloadtargetcli-3bdef6d1aa1f64c03816af68bd5fb2bd1bbb29be.tar.gz
saveconfig: set right perms on backup dir
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
-rw-r--r--targetcli/ui_root.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/targetcli/ui_root.py b/targetcli/ui_root.py
index 6e99b8c..b24c789 100644
--- a/targetcli/ui_root.py
+++ b/targetcli/ui_root.py
@@ -109,12 +109,21 @@ class UIRoot(UINode):
backupfile = backup_dir + backup_name
backup_error = None
+ mode = stat.S_IRUSR | stat.S_IWUSR # 0o600
+ umask = 0o777 ^ mode # Prevents always downgrading umask to 0
+
if not os.path.exists(backup_dir):
+ umask_original = os.umask(umask)
try:
- os.makedirs(backup_dir)
+ os.makedirs(backup_dir, mode)
except OSError as exe:
raise ExecutionError("Cannot create backup directory [%s] %s."
% (backup_dir, exe.strerror))
+ finally:
+ os.umask(umask_original)
+ else:
+ if (os.stat(backup_dir).st_mode & 0o777) != mode:
+ os.chmod(backup_dir, mode)
# Only save backups if savefile exits
if not os.path.exists(savefile):
@@ -125,8 +134,6 @@ class UIRoot(UINode):
# Save backup if backup dir is empty, or savefile is differnt from recent backup copy
if not backed_files_list or not self._compare_files(backed_files_list[-1], savefile):
- mode = stat.S_IRUSR | stat.S_IWUSR # 0o600
- umask = 0o777 ^ mode # Prevents always downgrading umask to 0
umask_original = os.umask(umask)
try:
with open(savefile, 'rb') as f_in, gzip.open(backupfile, 'wb') as f_out: