diff --git a/apps/files/ajax/upload.php b/apps/files/ajax/upload.php
index 1d03cd89f83c9510b3f2a640ce5158eb95cb2c5e..41d3a3eca4fe574577bcb496ced8f003b5fb1dfc 100644
--- a/apps/files/ajax/upload.php
+++ b/apps/files/ajax/upload.php
@@ -116,7 +116,8 @@ if (strpos($dir, '..') === false) {
 					'name' => basename($target),
 					'originalname' => $files['name'][$i],
 					'uploadMaxFilesize' => $maxUploadFileSize,
-					'maxHumanFilesize' => $maxHumanFileSize
+					'maxHumanFilesize' => $maxHumanFileSize,
+					'permissions' => $meta['permissions'],
 				);
 			}
 		}
diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js
index 330fe86f6b3d7a3b0116532be362b273842710a4..009ea62de9342c8dea67d8c28e3fcd7dc2c93038 100644
--- a/apps/files/js/fileactions.js
+++ b/apps/files/js/fileactions.js
@@ -68,6 +68,9 @@ var FileActions = {
 		if ($('tr[data-file="'+file+'"]').data('renaming')) {
 			return;
 		}
+
+		// recreate fileactions
+		parent.children('a.name').find('.fileactions').remove();
 		parent.children('a.name').append('<span class="fileactions" />');
 		var defaultAction = FileActions.getDefault(FileActions.getCurrentMimeType(), FileActions.getCurrentType(), FileActions.getCurrentPermissions());
 
@@ -117,6 +120,8 @@ var FileActions = {
 			addAction('Share', actions.Share);
 		}
 
+		// remove the existing delete action
+		parent.parent().children().last().find('.action.delete').remove();
 		if (actions['Delete']) {
 			var img = FileActions.icons['Delete'];
 			if (img.call) {
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 9a2d39c3652b1c5a4e0336ebffe42cb9d58a3b54..fe706801b9e2699a562607fab729b576e24488b6 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -130,7 +130,6 @@ var FileList={
 		if (hidden) {
 			tr.hide();
 		}
-		FileActions.display(tr.find('td.filename'));
 		return tr;
 	},
 	addDir:function(name,size,lastModified,hidden){
@@ -776,6 +775,12 @@ $(document).ready(function(){
 						data.context.attr('data-size', file.size);
 						data.context.find('td.filesize').text(humanFileSize(file.size));
 					}
+					var permissions = data.context.data('permissions');
+					if(permissions != file.permissions) {
+						data.context.attr('data-permissions', file.permissions);
+						data.context.data('permissions', file.permissions);
+					}
+					FileActions.display(data.context.find('td.filename'));
 					if (FileList.loadingDone) {
 						FileList.loadingDone(file.name, file.id);
 					}