diff --git a/apps/dav/lib/connector/sabre/filesplugin.php b/apps/dav/lib/connector/sabre/filesplugin.php
index 61b5360cac1312ceae1b70d787bf0322ce90185b..00d5d2cd7254c8ec823e1aecbe17b08f443f559c 100644
--- a/apps/dav/lib/connector/sabre/filesplugin.php
+++ b/apps/dav/lib/connector/sabre/filesplugin.php
@@ -42,6 +42,8 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
 	const SIZE_PROPERTYNAME = '{http://owncloud.org/ns}size';
 	const GETETAG_PROPERTYNAME = '{DAV:}getetag';
 	const LASTMODIFIED_PROPERTYNAME = '{DAV:}lastmodified';
+	const OWNER_ID_PROPERTYNAME = '{http://owncloud.org/ns}owner-id';
+	const OWNER_DISPLAY_NAME_PROPERTYNAME = '{http://owncloud.org/ns}owner-display-name';
 
 	/**
 	 * Reference to main server object
@@ -99,6 +101,8 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
 		$server->protectedProperties[] = self::PERMISSIONS_PROPERTYNAME;
 		$server->protectedProperties[] = self::SIZE_PROPERTYNAME;
 		$server->protectedProperties[] = self::DOWNLOADURL_PROPERTYNAME;
+		$server->protectedProperties[] = self::OWNER_ID_PROPERTYNAME;
+		$server->protectedProperties[] = self::OWNER_DISPLAY_NAME_PROPERTYNAME;
 
 		// normally these cannot be changed (RFC4918), but we want them modifiable through PROPPATCH
 		$allowedProperties = ['{DAV:}getetag'];
@@ -201,6 +205,16 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
 				return $node->getSize();
 			});
 		}
+
+		$propFind->handle(self::OWNER_ID_PROPERTYNAME, function() use ($node) {
+			$owner = $node->getOwner();
+			return $owner->getUID();
+		});
+		$propFind->handle(self::OWNER_DISPLAY_NAME_PROPERTYNAME, function() use ($node) {
+			$owner = $node->getOwner();
+			$displayName = $owner->getDisplayName();
+			return $displayName;
+		});
 	}
 
 	/**
diff --git a/apps/dav/lib/connector/sabre/node.php b/apps/dav/lib/connector/sabre/node.php
index 814aaceb077090e29337376f2c716aa1ae947349..ae7dd51fc9455fe0f4709129732f3f93f1d09ab9 100644
--- a/apps/dav/lib/connector/sabre/node.php
+++ b/apps/dav/lib/connector/sabre/node.php
@@ -238,6 +238,10 @@ abstract class Node implements \Sabre\DAV\INode {
 		return $p;
 	}
 
+	public function getOwner() {
+		return $this->info->getOwner();
+	}
+
 	protected function verifyPath() {
 		try {
 			$fileName = basename($this->info->getPath());
diff --git a/apps/dav/tests/unit/connector/sabre/filesplugin.php b/apps/dav/tests/unit/connector/sabre/filesplugin.php
index f3c862941c0a57ea5bc64f4a1d5f739cde5e4a70..55c8dd49e1782e2336775b2a36a3a4b0246e6034 100644
--- a/apps/dav/tests/unit/connector/sabre/filesplugin.php
+++ b/apps/dav/tests/unit/connector/sabre/filesplugin.php
@@ -15,6 +15,8 @@ class FilesPlugin extends \Test\TestCase {
 	const PERMISSIONS_PROPERTYNAME = \OCA\DAV\Connector\Sabre\FilesPlugin::PERMISSIONS_PROPERTYNAME;
 	const LASTMODIFIED_PROPERTYNAME = \OCA\DAV\Connector\Sabre\FilesPlugin::LASTMODIFIED_PROPERTYNAME;
 	const DOWNLOADURL_PROPERTYNAME = \OCA\DAV\Connector\Sabre\FilesPlugin::DOWNLOADURL_PROPERTYNAME;
+	const OWNER_ID_PROPERTYNAME = \OCA\DAV\Connector\Sabre\FilesPlugin::OWNER_ID_PROPERTYNAME;
+	const OWNER_DISPLAY_NAME_PROPERTYNAME = \OCA\DAV\Connector\Sabre\FilesPlugin::OWNER_DISPLAY_NAME_PROPERTYNAME;
 
 	/**
 	 * @var \Sabre\DAV\Server
@@ -91,13 +93,29 @@ class FilesPlugin extends \Test\TestCase {
 				self::SIZE_PROPERTYNAME,
 				self::PERMISSIONS_PROPERTYNAME,
 				self::DOWNLOADURL_PROPERTYNAME,
+				self::OWNER_ID_PROPERTYNAME,
+				self::OWNER_DISPLAY_NAME_PROPERTYNAME
 			),
 			0
 		);
 
+		$user = $this->getMockBuilder('\OC\User\User')
+			->disableOriginalConstructor()->getMock();
+		$user
+			->expects($this->once())
+			->method('getUID')
+			->will($this->returnValue('foo'));
+		$user
+			->expects($this->once())
+			->method('getDisplayName')
+			->will($this->returnValue('M. Foo'));
+
 		$node->expects($this->once())
 			->method('getDirectDownload')
 			->will($this->returnValue(array('url' => 'http://example.com/')));
+		$node->expects($this->exactly(2))
+			->method('getOwner')
+			->will($this->returnValue($user));
 		$node->expects($this->never())
 			->method('getSize');
 
@@ -111,6 +129,8 @@ class FilesPlugin extends \Test\TestCase {
 		$this->assertEquals(null, $propFind->get(self::SIZE_PROPERTYNAME));
 		$this->assertEquals('DWCKMSR', $propFind->get(self::PERMISSIONS_PROPERTYNAME));
 		$this->assertEquals('http://example.com/', $propFind->get(self::DOWNLOADURL_PROPERTYNAME));
+		$this->assertEquals('foo', $propFind->get(self::OWNER_ID_PROPERTYNAME));
+		$this->assertEquals('M. Foo', $propFind->get(self::OWNER_DISPLAY_NAME_PROPERTYNAME));
 		$this->assertEquals(array(self::SIZE_PROPERTYNAME), $propFind->get404Properties());
 	}
 
@@ -207,6 +227,36 @@ class FilesPlugin extends \Test\TestCase {
 		$this->assertEquals(200, $result[self::GETETAG_PROPERTYNAME]);
 	}
 
+	public function testUpdatePropsForbidden() {
+		$node = $this->createTestNode('\OCA\DAV\Connector\Sabre\File');
+
+		$propPatch = new \Sabre\DAV\PropPatch(array(
+			self::OWNER_ID_PROPERTYNAME => 'user2',
+			self::OWNER_DISPLAY_NAME_PROPERTYNAME => 'User Two',
+			self::FILEID_PROPERTYNAME => 12345,
+			self::PERMISSIONS_PROPERTYNAME => 'C',
+			self::SIZE_PROPERTYNAME => 123,
+			self::DOWNLOADURL_PROPERTYNAME => 'http://example.com/',
+		));
+
+		$this->plugin->handleUpdateProperties(
+			'/dummypath',
+			$propPatch
+		);
+
+		$propPatch->commit();
+
+		$this->assertEmpty($propPatch->getRemainingMutations());
+
+		$result = $propPatch->getResult();
+		$this->assertEquals(403, $result[self::OWNER_ID_PROPERTYNAME]);
+		$this->assertEquals(403, $result[self::OWNER_DISPLAY_NAME_PROPERTYNAME]);
+		$this->assertEquals(403, $result[self::FILEID_PROPERTYNAME]);
+		$this->assertEquals(403, $result[self::PERMISSIONS_PROPERTYNAME]);
+		$this->assertEquals(403, $result[self::SIZE_PROPERTYNAME]);
+		$this->assertEquals(403, $result[self::DOWNLOADURL_PROPERTYNAME]);
+	}
+
 	/**
 	 * Testcase from https://github.com/owncloud/core/issues/5251
 	 *