From 1b7dfd73afba20ccbd3b313d0f1bb678e60654d8 Mon Sep 17 00:00:00 2001
From: Arthur Schiwon <blizzz@arthur-schiwon.de>
Date: Thu, 30 Nov 2017 11:16:00 +0100
Subject: [PATCH] Allow to skip data dir permission checks by config

Enables installation on services that don't allow/support permission
changes.

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
---
 config/config.sample.php    | 12 ++++++++++++
 lib/private/legacy/util.php |  5 ++++-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/config/config.sample.php b/config/config.sample.php
index 022b807a881..adb0c125b1e 100644
--- a/config/config.sample.php
+++ b/config/config.sample.php
@@ -645,6 +645,18 @@ $CONFIG = array(
  */
 'check_for_working_htaccess' => true,
 
+/**
+ * In rare setups (e.g. on Openshift or docker on windows) the permissions check
+ * might block the installation while the underlying system offers no means to
+ * "correct" the permissions. In this case, set the value to false.
+ *
+ * In regular cases, if issues with permissions are encountered they should be
+ * adjusted accordingly. Changing the flag is discouraged.
+ *
+ * Defaults to ``true``
+ */
+'check_data_directory_permissions' => true,
+
 /**
  * In certain environments it is desired to have a read-only configuration file.
  * When this switch is set to ``true`` Nextcloud will not verify whether the
diff --git a/lib/private/legacy/util.php b/lib/private/legacy/util.php
index 3ce11746672..2fc6ba52d4e 100644
--- a/lib/private/legacy/util.php
+++ b/lib/private/legacy/util.php
@@ -979,8 +979,11 @@ class OC_Util {
 	 * @return array arrays with error messages and hints
 	 */
 	public static function checkDataDirectoryPermissions($dataDirectory) {
+		if(\OC::$server->getConfig()->getSystemValue('check_data_directory_permissions', true) === false) {
+			return  [];
+		}
 		$l = \OC::$server->getL10N('lib');
-		$errors = array();
+		$errors = [];
 		$permissionsModHint = $l->t('Please change the permissions to 0770 so that the directory'
 			. ' cannot be listed by other users.');
 		$perms = substr(decoct(@fileperms($dataDirectory)), -3);
-- 
GitLab