From 5ebd3a9e89de8a29806987a0a31b0c475566db30 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20M=C3=BCller?= <thomas.mueller@tmit.eu>
Date: Wed, 1 Apr 2015 10:31:48 +0200
Subject: [PATCH] Cron has to be executed with the correct user - fixes 13912
 and others

---
 cron.php | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/cron.php b/cron.php
index 676cb62bb5..c623689722 100644
--- a/cron.php
+++ b/cron.php
@@ -73,6 +73,22 @@ try {
 		// set to run indefinitely if needed
 		set_time_limit(0);
 
+		// the cron job must be executed with the right user
+		if (!OC_Util::runningOnWindows())  {
+			if (!function_exists('posix_getuid')) {
+				echo "The posix extensions are required - see http://php.net/manual/en/book.posix.php" . PHP_EOL;
+				exit(0);
+			}
+			$user = posix_getpwuid(posix_getuid());
+			$configUser = posix_getpwuid(fileowner(OC::$SERVERROOT . '/config/config.php'));
+			if ($user['name'] !== $configUser['name']) {
+				echo "Console has to be executed with the same user as the web server is operated" . PHP_EOL;
+				echo "Current user: " . $user['name'] . PHP_EOL;
+				echo "Web server user: " . $configUser['name'] . PHP_EOL;
+				exit(0);
+			}
+		}
+
 		$config = OC::$server->getConfig();
 		$instanceId = $config->getSystemValue('instanceid');
 		$lockFileName = 'owncloud-server-' . $instanceId . '-cron.lock';
-- 
GitLab