From 8d02d2a9fb06acb9ef9590b6ee5fd6b6c9ba8f11 Mon Sep 17 00:00:00 2001 From: Spitap Date: Thu, 21 Jul 2022 17:09:23 +0200 Subject: [PATCH] added safe mkdir in utils, use utils.mkdir_safe() in backup --- modoboa_installer/scripts/backup.py | 8 ++++++-- modoboa_installer/utils.py | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/modoboa_installer/scripts/backup.py b/modoboa_installer/scripts/backup.py index a913919..87de10f 100644 --- a/modoboa_installer/scripts/backup.py +++ b/modoboa_installer/scripts/backup.py @@ -1,7 +1,9 @@ """Backup script for pre-installed instance""" import os +import pwd import shutil +import stat from .. import database from .. import utils @@ -31,8 +33,9 @@ class Backup(): def preparePath(self): + pw = pwd.getpwnam("root") for dir in self.BACKUPDIRECTORY: - utils.mkdir(self.destinationPath + dir) + utils.mkdir_safe(self.destinationPath + dir, stat.S_IRWXU | stat.S_IRWXG, pw[2], pw[3]) def validatePath(self, path): @@ -49,7 +52,8 @@ class Backup(): createDir = input(f"\"{path}\" doesn't exists, would you like to create it ? [Y/n]\n").lower() if createDir == "y" or createDir == "yes": - os.mkdir(path) + pw = pwd.getpwnam("root") + utils.mkdir_safe(path, stat.S_IRWXU | stat.S_IRWXG, pw[2], pw[3]) else: return False diff --git a/modoboa_installer/utils.py b/modoboa_installer/utils.py index 627f519..78d9d67 100644 --- a/modoboa_installer/utils.py +++ b/modoboa_installer/utils.py @@ -106,6 +106,11 @@ def mkdir(path, mode, uid, gid): os.chmod(path, mode) os.chown(path, uid, gid) +def mkdir_safe(path, mode, uid, gid): + """Create a directory. Safe way (-p)""" + if not os.path.exists(path): + os.makedirs(os.path.abspath(path), mode) + mkdir(path, mode, uid, gid) def make_password(length=16): """Create a random password."""