diff --git a/src/main/java/org/olat/admin/sysinfo/manager/CustomStaticFolderManager.java b/src/main/java/org/olat/admin/sysinfo/manager/CustomStaticFolderManager.java
index a751c329b965b31ba38159462bc257bd889bb856..1cfe1062d445dcbcf0dd821b8752b0e43d121fca 100644
--- a/src/main/java/org/olat/admin/sysinfo/manager/CustomStaticFolderManager.java
+++ b/src/main/java/org/olat/admin/sysinfo/manager/CustomStaticFolderManager.java
@@ -68,6 +68,11 @@ public class CustomStaticFolderManager implements InitializingBean, WebDAVProvid
 	public String getMountPoint() {
 		return MOUNT_POINT;
 	}
+	
+	@Override
+	public boolean hasAccess(IdentityEnvironment identityEnv) {
+		return identityEnv != null && identityEnv.getRoles() != null && identityEnv.getRoles().isOLATAdmin();
+	}
 
 	@Override
 	public VFSContainer getContainer(IdentityEnvironment identityEnv) {
diff --git a/src/main/java/org/olat/commons/calendar/CalendarWebDAVProvider.java b/src/main/java/org/olat/commons/calendar/CalendarWebDAVProvider.java
index 28474840361ff3f80706fc8cf624827cfc33810c..430b0c6e3e59a9838be9d6c8800758d2bba739b3 100644
--- a/src/main/java/org/olat/commons/calendar/CalendarWebDAVProvider.java
+++ b/src/main/java/org/olat/commons/calendar/CalendarWebDAVProvider.java
@@ -38,6 +38,12 @@ public class CalendarWebDAVProvider implements WebDAVProvider {
 
 	private static final String MOUNT_POINT = "calendars";
 	
+	@Override
+	public boolean hasAccess(IdentityEnvironment identityEnv) {
+		return identityEnv != null;
+	}
+	
+	@Override
 	public VFSContainer getContainer(IdentityEnvironment identityEnv) {
 		VirtualContainer calendars = new VirtualContainer("calendars");
 		calendars.setLocalSecurityCallback(new ReadOnlyCallback());
@@ -48,8 +54,8 @@ public class CalendarWebDAVProvider implements WebDAVProvider {
 		return calendars;
 	}
 
+	@Override
 	public String getMountPoint() {
 		return MOUNT_POINT;
 	}
-
-}
+}
\ No newline at end of file
diff --git a/src/main/java/org/olat/core/commons/modules/bc/BriefcaseWebDAVProvider.java b/src/main/java/org/olat/core/commons/modules/bc/BriefcaseWebDAVProvider.java
index 47dbbb2c85f60ccd0c1078444f31d63cd4a28fae..1dad8af1cdd2d15abe9b83d7646a9273bb3f00f4 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/BriefcaseWebDAVProvider.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/BriefcaseWebDAVProvider.java
@@ -36,7 +36,8 @@ import org.olat.core.util.vfs.VFSContainer;
 public class BriefcaseWebDAVProvider implements WebDAVProvider {
 
 	private static final String MOUNTPOINT = "home";
-	
+
+	@Override
 	public String getMountPoint() {
 		return MOUNTPOINT;
 	}
@@ -46,6 +47,11 @@ public class BriefcaseWebDAVProvider implements WebDAVProvider {
 		return new BriefcaseWebDAVMergeSource(identity);
 	}
 
+	@Override
+	public boolean hasAccess(IdentityEnvironment identityEnv) {
+		return identityEnv != null;
+	}
+
 	/**
 	 * @see org.olat.core.commons.services.webdav.WebDAVProvider#getContainer(org.olat.core.id.Identity)
 	 */
diff --git a/src/main/java/org/olat/core/commons/services/webdav/WebDAVProvider.java b/src/main/java/org/olat/core/commons/services/webdav/WebDAVProvider.java
index e0901275e1930931ccd16d5827417c7c44113cb3..5879ac519fd08bbb8a49e422db2027d3a3b650eb 100644
--- a/src/main/java/org/olat/core/commons/services/webdav/WebDAVProvider.java
+++ b/src/main/java/org/olat/core/commons/services/webdav/WebDAVProvider.java
@@ -30,6 +30,8 @@ import org.olat.core.id.IdentityEnvironment;
 import org.olat.core.util.vfs.VFSContainer;
 
 public interface WebDAVProvider {
+	
+	public boolean hasAccess(IdentityEnvironment identityEnv);
 
 	/**
 	 * Get a name under which this provider would like to list its container as at the root level of the WebDAV mount point
diff --git a/src/main/java/org/olat/core/commons/services/webdav/manager/WebDAVManagerImpl.java b/src/main/java/org/olat/core/commons/services/webdav/manager/WebDAVManagerImpl.java
index c9d042f2246628c4ef902a0ecd9bf03b4e32ec6c..187a107fa0367a91d16c01f9826a6a38bd90690a 100644
--- a/src/main/java/org/olat/core/commons/services/webdav/manager/WebDAVManagerImpl.java
+++ b/src/main/java/org/olat/core/commons/services/webdav/manager/WebDAVManagerImpl.java
@@ -130,7 +130,9 @@ public class WebDAVManagerImpl implements WebDAVManager, InitializingBean {
 		MergeSource vfsRoot = new MergeSource(null, "webdav");
 		for (Map.Entry<String, WebDAVProvider> entry : webdavModule.getWebDAVProviders().entrySet()) {
 			WebDAVProvider provider = entry.getValue();
-			vfsRoot.addContainer(new WebDAVProviderNamedContainer(identityEnv, provider));
+			if(provider.hasAccess(identityEnv)) {
+				vfsRoot.addContainer(new WebDAVProviderNamedContainer(identityEnv, provider));
+			}
 		}
 		return vfsRoot;
 	}
@@ -139,9 +141,7 @@ public class WebDAVManagerImpl implements WebDAVManager, InitializingBean {
 		//create the / folder
 		VirtualContainer rootContainer = new VirtualContainer("");
 		rootContainer.setLocalSecurityCallback(new ReadOnlyCallback());
-
-		VFSResourceRoot fdc = new VFSResourceRoot(usess.getIdentity(), rootContainer);
-		return fdc;
+		return new VFSResourceRoot(usess.getIdentity(), rootContainer);
 	}
 
 	/**
diff --git a/src/main/java/org/olat/course/CoursefolderWebDAVProvider.java b/src/main/java/org/olat/course/CoursefolderWebDAVProvider.java
index 52eccf277dc49d53a63433b2396b29a929ef9817..a40accd541213e510bf32997d199afcc0fe836fd 100644
--- a/src/main/java/org/olat/course/CoursefolderWebDAVProvider.java
+++ b/src/main/java/org/olat/course/CoursefolderWebDAVProvider.java
@@ -40,6 +40,11 @@ public class CoursefolderWebDAVProvider implements WebDAVProvider {
 	public String getMountPoint() {
 		return MOUNTPOINT;
 	}
+	
+	@Override
+	public boolean hasAccess(IdentityEnvironment identityEnv) {
+		return identityEnv != null;
+	}
 
 	@Override
 	public VFSContainer getContainer(IdentityEnvironment identityEnv) {
diff --git a/src/main/java/org/olat/group/GroupfoldersWebDAVProvider.java b/src/main/java/org/olat/group/GroupfoldersWebDAVProvider.java
index 71f8579d588a664570c5936873eb0ab0423adb27..29d9fbfcfeea81c54ca73edd176e38d67c83f263 100644
--- a/src/main/java/org/olat/group/GroupfoldersWebDAVProvider.java
+++ b/src/main/java/org/olat/group/GroupfoldersWebDAVProvider.java
@@ -46,6 +46,11 @@ public class GroupfoldersWebDAVProvider implements WebDAVProvider {
 	public void setCollaborationManager(CollaborationManager collaborationManager) {
 		this.collaborationManager = collaborationManager;
 	}
+	
+	@Override
+	public boolean hasAccess(IdentityEnvironment identityEnv) {
+		return identityEnv != null;
+	}
 
 	@Override
 	public String getMountPoint() {
diff --git a/src/main/java/org/olat/modules/sharedfolder/SharedFolderWebDAVProvider.java b/src/main/java/org/olat/modules/sharedfolder/SharedFolderWebDAVProvider.java
index 8fa86c8ca1632b5be5e1f0ae8e24c5520c172194..8c16f8db64b65a309f62692c237ad5ba0491af52 100644
--- a/src/main/java/org/olat/modules/sharedfolder/SharedFolderWebDAVProvider.java
+++ b/src/main/java/org/olat/modules/sharedfolder/SharedFolderWebDAVProvider.java
@@ -79,9 +79,15 @@ public class SharedFolderWebDAVProvider implements WebDAVProvider {
 	/**
 	 * @see org.olat.core.commons.services.webdav.WebDAVProvider#getMountPoint()
 	 */
+	@Override
 	public String getMountPoint() {
 		return "sharedfolders";
 	}
+	
+	@Override
+	public boolean hasAccess(IdentityEnvironment identityEnv) {
+		return identityEnv != null;
+	}
 
 	/**
 	 * @see org.olat.core.commons.services.webdav.WebDAVProvider#getContainer(org.olat.core.id.Identity)
diff --git a/src/test/java/org/olat/core/commons/services/webdav/WebDAVCommandsTest.java b/src/test/java/org/olat/core/commons/services/webdav/WebDAVCommandsTest.java
index c52d4e80bce89512bc95c1cc8791bd03ed3594b2..9a74b0c2f251dc32e688861e1ca2f2a78bfa0758 100644
--- a/src/test/java/org/olat/core/commons/services/webdav/WebDAVCommandsTest.java
+++ b/src/test/java/org/olat/core/commons/services/webdav/WebDAVCommandsTest.java
@@ -664,6 +664,58 @@ public class WebDAVCommandsTest extends WebDAVTestCase {
 		conn.close();
 	}
 	
+	@Test
+	public void customizingFolder()
+	throws IOException, URISyntaxException {
+		Identity admin = JunitTestHelper.createAndPersistIdentityAsAdmin("admin-webdav");
+		dbInstance.commitAndCloseSession();
+		
+		WebDAVConnection conn = new WebDAVConnection();
+		conn.setCredentials(admin.getName(), "A6B7C8");
+
+		//Has access?
+		URI customizingUri = conn.getBaseURI().path("webdav").path("customizing").build();
+		String customizingXml = conn.propfind(customizingUri, 2);
+		Assert.assertTrue(customizingXml.contains("<D:href>/webdav/customizing/</D:href>"));
+
+		//PUT in the folder
+		URI textUri = conn.getBaseURI().path("webdav").path("customizing").path("infos.txt").build();
+		HttpPut put = conn.createPut(textUri);
+		InputStream dataStream = WebDAVCommandsTest.class.getResourceAsStream("text.txt");
+		InputStreamEntity entity = new InputStreamEntity(dataStream, -1);
+		put.setEntity(entity);
+		HttpResponse putResponse = conn.execute(put);
+		Assert.assertEquals(201, putResponse.getStatusLine().getStatusCode());
+		
+		//GET
+		HttpGet get = conn.createGet(textUri);
+		HttpResponse getResponse = conn.execute(get);
+		Assert.assertEquals(200, getResponse.getStatusLine().getStatusCode());
+		String text = EntityUtils.toString(getResponse.getEntity());
+		Assert.assertEquals("Small text", text);
+
+		conn.close();
+	}
+	
+	@Test
+	public void customizingFolder_permission()
+	throws IOException, URISyntaxException {
+		Identity user = JunitTestHelper.createAndPersistIdentityAsRndUser("user-webdav");
+		dbInstance.commitAndCloseSession();
+		
+		WebDAVConnection conn = new WebDAVConnection();
+		conn.setCredentials(user.getName(), "A6B7C8");
+
+		URI customizingUri = conn.getBaseURI().path("webdav").path("customizing").build();
+		HttpPropFind propfind = new HttpPropFind(customizingUri);
+		propfind.addHeader("Depth", Integer.toString(2));
+		HttpResponse response = conn.execute(propfind);
+		Assert.assertEquals(404, response.getStatusLine().getStatusCode());
+		EntityUtils.consume(response.getEntity());
+
+		conn.close();
+	}
+	
 	private VFSItem createFile(VFSContainer container, String filename) throws IOException {
 		VFSLeaf testLeaf = container.createChildLeaf(filename);
 		InputStream in = WebDAVCommandsTest.class.getResourceAsStream("text.txt");