From cf0883e16cf675bdb871601a3169ede18e05a7a6 Mon Sep 17 00:00:00 2001 From: Kyle Lacy Date: Mon, 26 Nov 2018 21:06:47 -0800 Subject: [PATCH] mount: Add "no-default-permissions" option This option restores the previous behavior of `mount` by disabling the "DefaultPermissions" FUSE option. This allows any user that can access the mountpoint to read any file from the snapshot. Normal FUSE rules apply, so `allow-root` or `allow-other` can be used to allow users besides the mounting user to access these files. --- cmd/restic/cmd_mount.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/cmd/restic/cmd_mount.go b/cmd/restic/cmd_mount.go index 2e8406357..e8c862392 100644 --- a/cmd/restic/cmd_mount.go +++ b/cmd/restic/cmd_mount.go @@ -53,13 +53,14 @@ For details please see the documentation for time.Format() at: // MountOptions collects all options for the mount command. type MountOptions struct { - OwnerRoot bool - AllowRoot bool - AllowOther bool - Host string - Tags restic.TagLists - Paths []string - SnapshotTemplate string + OwnerRoot bool + AllowRoot bool + AllowOther bool + NoDefaultPermissions bool + Host string + Tags restic.TagLists + Paths []string + SnapshotTemplate string } var mountOptions MountOptions @@ -71,6 +72,7 @@ func init() { mountFlags.BoolVar(&mountOptions.OwnerRoot, "owner-root", false, "use 'root' as the owner of files and dirs") mountFlags.BoolVar(&mountOptions.AllowRoot, "allow-root", false, "allow root user to access the data in the mounted directory") mountFlags.BoolVar(&mountOptions.AllowOther, "allow-other", false, "allow other users to access the data in the mounted directory") + mountFlags.BoolVar(&mountOptions.NoDefaultPermissions, "no-default-permissions", false, "for 'allow-other', ignore Unix permissions and allow users to read all snapshot files") mountFlags.StringVarP(&mountOptions.Host, "host", "H", "", `only consider snapshots for this host`) mountFlags.Var(&mountOptions.Tags, "tag", "only consider snapshots which include this `taglist`") @@ -120,7 +122,9 @@ func mount(opts MountOptions, gopts GlobalOptions, mountpoint string) error { mountOptions = append(mountOptions, systemFuse.AllowOther()) } - mountOptions = append(mountOptions, systemFuse.DefaultPermissions()) + if !opts.NoDefaultPermissions { + mountOptions = append(mountOptions, systemFuse.DefaultPermissions()) + } c, err := systemFuse.Mount(mountpoint, mountOptions...) if err != nil {