diff --git a/src/utils.c b/src/utils.c
index 0ee4ced1d0cdc73d031b15a62a004a1ed1e127ae..94a126fa70e2b2d57162702f0c46eadc97f969bd 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -303,8 +303,8 @@ copy_tree_helper (const char *fpath,
           return 1;
         }
 
-      if (!glnx_shutil_mkdir_p_at (-1, nftw_data.dest_root, 0700, NULL,
-                                   error))
+      if (!glnx_shutil_mkdir_p_at (-1, nftw_data.dest_root,
+                                   sb->st_mode & 07777, NULL, error))
         return 1;
 
       return 0;
@@ -318,8 +318,8 @@ copy_tree_helper (const char *fpath,
   switch (typeflag)
     {
       case FTW_D:
-        /* For now we assume the permissions are not significant */
-        if (!glnx_shutil_mkdir_p_at (-1, dest, 0755, NULL, error))
+        if (!glnx_shutil_mkdir_p_at (-1, dest, sb->st_mode & 07777,
+                                     NULL, error))
           return 1;
         break;