diff --git a/lib/files/cache/cache.php b/lib/files/cache/cache.php
index 7e0c5cb21f9d2ff4e4ace151db4c26409e8dba2d..5efc7d67c4a439f93bb8aa8226b4308096d3dace 100644
--- a/lib/files/cache/cache.php
+++ b/lib/files/cache/cache.php
@@ -286,4 +286,19 @@ class Cache {
 		}
 		return $files;
 	}
+
+	/**
+	 * get all file ids on the files on the storage
+	 *
+	 * @return int[]
+	 */
+	public function getAll() {
+		$query = \OC_DB::prepare('SELECT `fileid` FROM `*PREFIX*filecache` WHERE `storage` = ?');
+		$result = $query->execute(array($this->storageId));
+		$ids = array();
+		while ($row = $result->fetchRow()) {
+			$ids[] = $row['fileid'];
+		}
+		return $ids;
+	}
 }
diff --git a/lib/files/cache/scanner.php b/lib/files/cache/scanner.php
index e8f54c34be70d1c6c3ff2fc7d9685f9798d683b8..0adde1d354daa62b27b64c669549a250772f4b6a 100644
--- a/lib/files/cache/scanner.php
+++ b/lib/files/cache/scanner.php
@@ -66,7 +66,8 @@ class Scanner {
 				$this->scanFile($parent);
 			}
 		}
-		$this->cache->put($file, $data);
+		$id = $this->cache->put($file, $data);
+		Permissions::set($id, \OC_User::getUser(), $data['permissions']);
 		return $data;
 	}
 
diff --git a/lib/files/view.php b/lib/files/view.php
index 04b7dca8afcd2df4e3423c044930883fa772a05d..82455d582eb3151e8083750c0a2483f1d84f9101 100644
--- a/lib/files/view.php
+++ b/lib/files/view.php
@@ -686,6 +686,8 @@ class View {
 			}
 		}
 
+		$data['permissions'] = Cache\Permissions::get($data['fileid'], \OC_User::getUser());
+
 		return $data;
 	}
 
@@ -733,8 +735,16 @@ class View {
 			}
 		}
 
-		foreach($files as $i => $file){
+		$ids = array();
+
+		foreach ($files as $i => $file) {
 			$files[$i]['type'] = $file['mimetype'] === 'httpd/unix-directory' ? 'dir' : 'file';
+			$ids[] = $file['fileid'];
+		}
+
+		$permissions = Cache\Permissions::getMultiple($ids, \OC_User::getUser());
+		foreach ($files as $i => $file) {
+			$files[$i]['permissions'] = $permissions[$file['fileid']];
 		}
 
 		usort($files, "fileCmp"); //TODO: remove this once ajax is merged
diff --git a/tests/lib/files/cache/scanner.php b/tests/lib/files/cache/scanner.php
index e3f47047f5422fd2c28a9920ad89f7d5b8073cac..34fefc784d40dd39b8b8de4fe8587920ccf1c041 100644
--- a/tests/lib/files/cache/scanner.php
+++ b/tests/lib/files/cache/scanner.php
@@ -106,6 +106,8 @@ class Scanner extends \UnitTestCase {
 	}
 
 	function tearDown() {
+		$ids = $this->cache->getAll();
+		\OC\Files\Cache\Permissions::removeMultiple($ids, \OC_User::getUser());
 		$this->cache->clear();
 	}
 }