diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php index 0621cff84..be012aa8c 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Config/Application.php @@ -235,6 +235,8 @@ protected function defaultValues() : array 'admin_login' => array('admin', 'Login and password for web admin panel'), 'admin_password' => array(''), 'admin_totp' => array(''), + 'file_permissions' => array('0600', 'permissions to chmod cache files to when creating'), + 'dir_permissions' => array('0700', 'permissions to chmod cache directories to when creating'), 'insecure_cryptkey' => array(false, 'Use email address instead of login password for encrypting sensitive data (like account passwords)'), 'force_https' => array(false), diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Utils.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Utils.php index c72d127f0..a43b3019b 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Utils.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Utils.php @@ -156,14 +156,14 @@ public static function inOpenBasedir(string $name) : string public static function saveFile(string $filename, string $data) : void { $dir = \dirname($filename); - if (!\is_dir($dir) && !\mkdir($dir, 0700, true)) { + if (!\is_dir($dir) && !\mkdir($dir, intval($oConfig->Get('security', 'dir_permissions)), true)) { throw new \RuntimeException('Failed to create directory "'.$dir.'"'); } if (false === \file_put_contents($filename, $data)) { throw new \RuntimeException('Failed to save file "'.$filename.'"'); } \clearstatcache(); - \chmod($filename, 0600); + \chmod($filename, intval($oConfig->Get('security', 'file_permissions'))); /* try { } catch (\Throwable $oException) {