diff --git a/lib/private/Files/Cache/Cache.php b/lib/private/Files/Cache/Cache.php index 89c69bdbc1b70..a7a6ff9a1f8db 100644 --- a/lib/private/Files/Cache/Cache.php +++ b/lib/private/Files/Cache/Cache.php @@ -1017,10 +1017,11 @@ public function copyFromCache(ICache $sourceCache, ICacheEntry $sourceEntry, str throw new \RuntimeException("Invalid source cache entry on copyFromCache"); } $data = $this->cacheEntryToArray($sourceEntry); + $targetParentEntry = $this->get(dirname($targetPath)); if ($sourceEntry->getMimeType() === ICacheEntry::DIRECTORY_MIMETYPE) { - $data['permissions'] = Constants::PERMISSION_ALL; + $data['permissions'] = $targetParentEntry->getPermissions(); } else { - $data['permissions'] = Constants::PERMISSION_ALL - Constants::PERMISSION_CREATE; + $data['permissions'] = $targetParentEntry->getPermissions() - Constants::PERMISSION_CREATE; } $fileId = $this->put($targetPath, $data); if ($fileId <= 0) {