From 3cd3c6dd90f3fde3e79512702391af40fc8b3e9a Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Wed, 8 Apr 2026 18:00:41 +0200 Subject: [PATCH] fix: only mask the permissions for the users home directory for public shares this ensures that versions/trashbin/etc is still usable Signed-off-by: Robin Appelman --- apps/dav/appinfo/v1/publicwebdav.php | 8 ++++++-- .../files_versions/lib/Versions/LegacyVersionsBackend.php | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/apps/dav/appinfo/v1/publicwebdav.php b/apps/dav/appinfo/v1/publicwebdav.php index 7b576496cc8..316a84d9767 100644 --- a/apps/dav/appinfo/v1/publicwebdav.php +++ b/apps/dav/appinfo/v1/publicwebdav.php @@ -6,7 +6,7 @@ * SPDX-License-Identifier: AGPL-3.0-only */ use OC\Files\Filesystem; -use OC\Files\Storage\Wrapper\PermissionsMask; +use OC\Files\Storage\Wrapper\DirPermissionsMask; use OC\Files\View; use OCA\DAV\Connector\LegacyPublicAuth; use OCA\DAV\Connector\Sabre\ServerFactory; @@ -98,7 +98,11 @@ $server = $serverFactory->createServer( // FIXME: should not add storage wrappers outside of preSetup, need to find a better way $previousLog = Filesystem::logWarningWhenAddingStorageWrapper(false); Filesystem::addStorageWrapper('sharePermissions', function ($mountPoint, $storage) use ($share) { - return new PermissionsMask(['storage' => $storage, 'mask' => $share->getPermissions() | Constants::PERMISSION_SHARE]); + return new DirPermissionsMask([ + 'storage' => $storage, + 'mask' => $share->getPermissions() | Constants::PERMISSION_SHARE, + 'path' => 'files' + ]); }); Filesystem::addStorageWrapper('shareOwner', function ($mountPoint, $storage) use ($share) { return new PublicOwnerWrapper(['storage' => $storage, 'owner' => $share->getShareOwner()]); diff --git a/apps/files_versions/lib/Versions/LegacyVersionsBackend.php b/apps/files_versions/lib/Versions/LegacyVersionsBackend.php index da6bb08a34c..c2d57ae96f2 100644 --- a/apps/files_versions/lib/Versions/LegacyVersionsBackend.php +++ b/apps/files_versions/lib/Versions/LegacyVersionsBackend.php @@ -157,7 +157,7 @@ class LegacyVersionsBackend implements IVersionBackend, IDeletableVersionBackend Storage::scheduleExpire($user->getUID(), $relativePath); // store a new version of a file - $res = $userView->copy('files/' . $relativePath, 'files_versions/' . $relativePath . '.v' . $file->getMtime()); + $userView->copy('files/' . $relativePath, 'files_versions/' . $relativePath . '.v' . $file->getMtime()); // ensure the file is scanned $userView->getFileInfo('files_versions/' . $relativePath . '.v' . $file->getMtime()); }